Как исправить? переменная не могла быть инициализирована - PullRequest
0 голосов
/ 15 апреля 2020

Я получаю сообщение об ошибке:

return lessRainMonth ; переменная, возможно, не была инициализирована

Как я могу это исправить?

public class Rainfall
{
   double [] rainfallNumber;

   public double getTotalRainfall() {
     double totalRainfall = 0;

     for (int index = 0; index < rainfallNumber.length; index++) {
         totalRainfall = totalRainfall+rainfallNumber[index];
        }
        return totalRainfall;
    }

    public double getAverageRainfall() {
        return getTotalRainfall() / rainfallNumber.length;
    }

    public int getMoreRainfallMonth() {
        double moreRain = rainfallNumber[0];
        int moreRainMonth = 1;

        for (int index = 0; index < rainfallNumber.length; index++) {
         if(rainfallNumber[index] > moreRain) {
             moreRain = rainfallNumber[index];
             moreRainMonth = index + 1;
            }
        }
        return moreRainMonth;
    }

    public int getLeastRainfallMonth() {
        double leastRain = rainfallNumber[0];
        int leastRainMonth;

        for (int index = 0; index < rainfallNumber.length; index++) {
         if(rainfallNumber[index] < leastRain) {
             leastRain = rainfallNumber[index];
             leastRainMonth = index + 1;
            }
        }
        return ***leastRainMonth***;
    }

   public Rainfall (double [] rainfallNumberGiven) {
       rainfallNumber = new double[rainfallNumberGiven.length];

       for (int index = 0; index < rainfallNumberGiven.length; index++) {
           rainfallNumber[index] = rainfallNumberGiven[index];  
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Каждый раз, когда вы инициализируете переменную в al oop, которая объявлена ​​вне l oop, вы рискуете, что размер массива (или количество итераций) будет равен нулю, и, следовательно, инициализация будет пропущена. Вы можете либо:

  1. выбрать целое число по умолчанию для инициализации leastRainMonth
  2. изменить тип возвращаемого значения getLeastRainfallMonth() на Integer и инициализировать Integer leastRainMonth = null; (хлопот).

В этом случае вам, вероятно, следует выполнить первый вариант и инициализировать int leastRainMonth = 1;.

0 голосов
/ 15 апреля 2020

Вы должны инициализировать переменную lessRainMonth в ее объявлении так же, как и для moreRainMonth.

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