Почему по i ошибки нету, а по j есть?

Рейтинг: 2Ответов: 1Опубликовано: 19.12.2014

Почему в нижеприведенном коде есть ошибка

"The local variable j may not have been initialized"

указывающая на строку loc.column = j; (3-я снизу)? Переменная j же проинициализирована. Почему нету такой же ошибки по строке loc.row = i;?

public class Location {
public int row;
public int column;
public double maxValue;
public static Location locateLargest(double [][] arr) {
    Location loc = new Location();
    int aRow = 0;
    int aColumn = 0;
    double maxValue = arr[aRow][aColumn];
    int i;
    int j;
    for(i = 0; i < arr.length; i++) {
        for (j = 0; j < arr[i].length; j++) {
            if(arr[i][j] > maxValue) {
                maxValue = arr[i][j];
                aRow = i;
                aColumn = j;
            }
        }       
    }
    loc.row = i;
    loc.column = j;
    loc.maxValue = maxValue;
    return loc;
}
}

Ответы

▲ 5Принят

Почему в нижеприведенном коде, есть ошибка

Здесь не требуется запятая. Если есть сомнения в необходимости запятой, можно просто проверить, соответствует ли это место паузе в разговорной речи.

Переменная j же проинициализирована.

Объявлена, но не проинициализирована. В случае, если arr.length будет равен нулю, цикл с j не выполнится ни разу, и, таким образом, к последним строчкам j ни разу ничего не присвоится.