变量已初始化但未被识别?
Variable initialized but not recognized?
嘿,我是一名高中生,我找到了解决我的问题的方法,但对为什么它正在做它正在做的事情感到困惑,有人可以解释一下吗?我也尝试寻找答案,但找不到答案,如果有人已经回答了这个问题,我很抱歉。
所以在 getAverage()
我声明 int i;并在 foreach 循环中初始化它但是当它运行时它说 "variable i might not have been initialized"
?我发现解决这个问题的方法只是 make int i = 0;
但我很困惑,因为我知道你可以声明一个变量而不是在那个时候初始化它,只要你稍后初始化它。那么是什么让它如此特别呢?
public class ArrayAverage
{
private int[] values;
public ArrayAverage(int[] theValues)
{
values = theValues;
}
public double getAverage()
{
// Problem here
int i; // Solution: int i = 0;
for(int value : values){
i += value;
}
double avg = (double)i / values.length;
return avg;
}
}
// This pseudo code code has nothing to do with above code
// but is example of what I know can be done but isn't
int i;
i = 10;
System.out.println(i);
//Output would be 10
问题是您要将变量 i
添加到自身和另一个值。但是,i
的初始值尚未在前面的代码中定义。这就是 i = 0
使代码工作的原因,因为程序现在知道对于第一个循环,它必须将值添加到 0,然后第二个循环将知道将先前的值添加到新值。
希望对您有所帮助。
嘿,我是一名高中生,我找到了解决我的问题的方法,但对为什么它正在做它正在做的事情感到困惑,有人可以解释一下吗?我也尝试寻找答案,但找不到答案,如果有人已经回答了这个问题,我很抱歉。
所以在 getAverage()
我声明 int i;并在 foreach 循环中初始化它但是当它运行时它说 "variable i might not have been initialized"
?我发现解决这个问题的方法只是 make int i = 0;
但我很困惑,因为我知道你可以声明一个变量而不是在那个时候初始化它,只要你稍后初始化它。那么是什么让它如此特别呢?
public class ArrayAverage
{
private int[] values;
public ArrayAverage(int[] theValues)
{
values = theValues;
}
public double getAverage()
{
// Problem here
int i; // Solution: int i = 0;
for(int value : values){
i += value;
}
double avg = (double)i / values.length;
return avg;
}
}
// This pseudo code code has nothing to do with above code
// but is example of what I know can be done but isn't
int i;
i = 10;
System.out.println(i);
//Output would be 10
问题是您要将变量 i
添加到自身和另一个值。但是,i
的初始值尚未在前面的代码中定义。这就是 i = 0
使代码工作的原因,因为程序现在知道对于第一个循环,它必须将值添加到 0,然后第二个循环将知道将先前的值添加到新值。
希望对您有所帮助。