这个问题在这里已经有答案了:
在for循环中声明的变量范围(5个答案)
5年前关门了。
我的问题的解决办法可能是显而易见的,但我还没有找到。如果您想知道这段代码应该做些什么,那么假设取10个用户输入的数字,将它们相加,然后输出平均值。到目前为止,我唯一的错误就是 double average = sum / 10;
它不读取变量 sum
我完全不知道为什么。
import java.io.*;
class Average
{
public static void main (String args[]) throws IOException
{
// declare some variables
int count = 0;
String inInput;
// declare array constructer
double[] userInput = new double[9];
// declare a reader
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(inStream);
// print out the array
while (count >= 9)
{
if (count != 10)
{
System.out.println ("Please enter a value");
}
else
{
System.out.println ("Please enter another value");
}
inInput = reader.readLine();
double inInputDouble = Double.parseDouble(inInput);
userInput[count] = inInputDouble;
double sum = sum + userInput[count];
count++;
}
double average = sum / 10;
System.out.println ("The average of all the numbers you have entered is" + average);
}
}
5条答案
按热度按时间2nbm6dog1#
您正在声明您的变量
sum
内部while
循环块。一旦该块完成,变量就超出范围,不再定义。把你的
double sum
会前声明while
你应该没事的。wa7juj8i2#
变量只能在声明它的范围内使用。你的
sum
变量在while
因此只能在该范围内使用。移动声明
sum
while循环的外部,如下所示:你可能也想改变
count >= 9
至count < 9
以避免数组索引超出边界。ijxebb2r3#
sum的作用域是它声明的块,其中是while循环的块。在while循环外声明sum。
一次又一次地重新声明这个变量没有太大意义,因为你想把所有的数字加起来。
看看这个问题:在for循环中声明的变量的作用域
ulydmbyx4#
int count总是0,所以它从不进入while(count>=9),当sum被调用时,它根本不会被定义,请更改while(count<=9)
emeijp435#
如上所述,sum必须在for循环之前声明。作用域就像程序中的括号,
如果所计算的指令与
a
,它无法知道b
以及c
,因为它们还没有申报。如果指令指针以int计算行
c
,它知道所有的变量,因为它已经进入了第三个范围级别。但是自从c
如果未保存c
在上层变量中,值会丢失,因为c
已清除,并且无法访问(外部范围)。就像你想从另一个文件中读取一个变量。。。你不能,范围就像便签,从外部开始,附加新的较小的便签,在物联网工作后,它们会被删除另一个错误:
new double[9];
? 你说要10英特。。。一开始你不算0。。。0用于基于0的索引(a[0],a[1],a[2]
需要一个new int[3]
)... 设置为新的双精度[10];