Я пишу программу, в которой у меня есть метод под названием «равно», чтобы проверить, являются ли два двумерных массива «равными» друг другу. equals возвращает, являются ли два аргумента эквивалентными в том смысле, что Если оба аргумента равны нулю, верните true Если один аргумент arg равен null, а другой - нет, верните false; Если 2 массива имеют другое количество строк, верните false else, верните, будет ли каждый элемент в arr1 эквивалентен соответствующему элементу в arr2 в том смысле, что оба элемента равны нулю, или оба элемента относятся к массивам с одинаковым числом от int с теми же значениями в том же порядке.Java -NullPointerException, и я не уверен, почему
составляет определение метода:
public static boolean equals(int[][] arr1, int[][] arr2){
//both are null references
if(arr1 == null && arr2 == null)
return true;
//only one is a null reference
if ((arr1 == null && arr2 != null) || (arr1 == null && arr2 != null))
return false;
//number of rows not identical
if(arr1.length != arr2.length)
return false;
for(int i = 0 ; i < arr1.length; i++){ //checking row equivalence
if(arr1[i] == null && arr2[i]==null){ //both null
continue;
}
if(arr1[i] == null || arr2[i] == null) //one is null
return false;
else if(arr1[i].length != arr2[i].length){
return false;
}
else{
for(int j = 0; j < arr1[i].length; i++){ //#of columns equal, compare them
System.out.println(i + "," + j); //helps debug
if(arr1[i][j] != arr2[i][j])
return false;
}
}
}
return true;
} //equals
Когда я звоню
equals(new int[][]{{1,2},{3,4},null}, new int[][]{{1,2},null,{3,4}})
моя программа аварии, бросая NullPointerException.
Eclipse, говорит, что он не на этой линии:
if(arr1[i][j] != arr2[i][j])
Проблема заключается в том, насколько я могу сказать, моя программа не должна входить в заключающей для цикла, где эта линия расположена, чтобы начать с. Он должен вернуть значение false на данный момент:
if(arr1[i] == null || arr2[i] == null) //one is null
return false;
Что я здесь делаю неправильно? Спасибо.
Голосование закрывается как типографская ошибка. –
ИСПОЛЬЗУЙТЕ ДЕВАГГЕР. – redFIVE