У вас здесь три проблемы, две из которых критические. Во-первых, если вы хотите перебрать каждый подмассив, каждый раз проверяйте его длину , а не длину array [0]. И во-вторых, целые числа не могут быть меньше 2 и больше 99, поэтому ваше условное (inArray[i][j] <= 1 && inArray[i][j] >= 100)
никогда не сработает.
Однако здесь есть кое-что еще: если ваш тест чисто чтобы узнать, действителен ли ваш 2-мерный массив, не выполняйте больше работы, чем необходимо. Вы можете буквально остановиться, как только найдете хоть один плохой элемент. Теперь мы могли бы сделать это, добавив проверку к вашим for
условным выражениям. Например, мы можем переименовать вашу переменную в valid
(потому что вы должны называть переменные после того, что они представляют), а затем мы можем обновить ваш внешний l oop до for(int i=0; valid && i < arr.length; i++) { ... }
с соответствующим valid && ...
во внутреннем l oop тоже, но мы не собираемся. Этот код «что-то делает» (а именно, «проверяет достоверность элемента» для любого массива-массивов), и код, который «что-то делает», должен быть в своем собственном методе с именем метода, описывающим, что он делает. И это значительно упрощает «не выполнять ту работу, которая нам не нужна»: мы просто выходим из функции, когда знаем, что проделали достаточно работы, чтобы получить ответ.
Итак, давайте сделай это:
// 1st fix: this code "does soemthing". Do that as a method.
public boolean testForValidContent(int[][] arr) {
// We don't need a variable to track things: because we're
// returning a value, we can simply return the right value
// at the moment we return.
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) { // 2nd fix: check the right array's length
if(arri][j] <= 1 || arr[i][j] >= 100) { // 3th fix: OR, not AND
// At this point we know the array is not valid, so there
// is no point in running even a single thing more:
return false;
}
}
}
// We checked the entire array, and everything's valid:
return true;
}