Переменная инициализирована, но не распознана? - PullRequest
1 голос
/ 20 марта 2020

Эй, я учусь в средней школе, и я нашел решение своей проблемы, но не понимаю, почему он делает то, что делает, может кто-нибудь объяснить? Также я попытался найти ответ, но не смог найти его таким извиняющимся, если кто-то уже ответил на него. и инициализировать его в foreach l oop, но когда он запускается, он говорит "variable i might not have been initialized"? Я обнаружил, что решение этой проблемы было просто сделать 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

1 Ответ

1 голос
/ 21 марта 2020

Проблема в том, что вы добавляете переменную i к себе и другое значение. Однако начальное значение для i не было определено в предыдущем коде. Это причина того, что i = 0 заставит код работать, так как теперь программа понимает, что для первого l oop необходимо добавить значение к 0, тогда второй l oop будет знать, что добавить предыдущий значение, в новое значение.

Надеюсь, это помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...