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

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,然后第二个循环将知道将先前的值添加到新值。

希望对您有所帮助。