Java 变量已初始化但未识别?
嘿,我是一名高中生,我找到了解决问题的办法,但对它为什么这样做感到困惑,有人能解释一下吗?我也试着寻找答案,但是如果有人已经回答了这个问题,我会感到很抱歉 因此,在Java 变量已初始化但未识别?,java,foreach,initialization,Java,Foreach,Initialization,嘿,我是一名高中生,我找到了解决问题的办法,但对它为什么这样做感到困惑,有人能解释一下吗?我也试着寻找答案,但是如果有人已经回答了这个问题,我会感到很抱歉 因此,在getAverage()I状态int I;并在foreach循环中初始化它,但当它运行时,它会说“变量i可能尚未初始化”?我发现解决这个问题的方法是makeinti=0
getAverage()
I状态int I;并在foreach循环中初始化它,但当它运行时,它会说“变量i可能尚未初始化”
?我发现解决这个问题的方法是makeinti=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;
}
}
问题是,您正在将变量i
添加到自身,并添加另一个值。但是,i
的初始值尚未在以前的代码中定义。这就是i=0
使代码工作的原因,因为程序现在知道,对于第一个循环,它必须将值添加到0,然后第二个循环将知道将以前的值添加到新值
希望这能有所帮助。i+=value
假设变量i
在那一点上已经初始化,但事实并非如此。天哪,我现在觉得自己很笨,idk为什么我现在感到困惑,我希望我没有发布这个问题
// 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