Java 变量已初始化但未识别?

Java 变量已初始化但未识别?,java,foreach,initialization,Java,Foreach,Initialization,嘿,我是一名高中生,我找到了解决问题的办法,但对它为什么这样做感到困惑,有人能解释一下吗?我也试着寻找答案,但是如果有人已经回答了这个问题,我会感到很抱歉 因此,在getAverage()I状态int I;并在foreach循环中初始化它,但当它运行时,它会说“变量i可能尚未初始化”?我发现解决这个问题的方法是makeinti=0

嘿,我是一名高中生,我找到了解决问题的办法,但对它为什么这样做感到困惑,有人能解释一下吗?我也试着寻找答案,但是如果有人已经回答了这个问题,我会感到很抱歉

因此,在
getAverage()
I状态int I;并在foreach循环中初始化它,但当它运行时,它会说
“变量i可能尚未初始化”
?我发现解决这个问题的方法是make
inti=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