Итак, я создаю своего рода приложение «Игра жизни» в java и обнаружил некоторые проблемы с обнаружением, когда индекс отсутствует. Код ниже - это модифицированная версия из еще один вопрос здесь из SO.Проверьте, является ли индекс OutOfBounds в 2D-массиве
2D массива:
1,1,1,1
1,1,1,1
1,1,1,1
1,1,1,1
Код
private void traverse() {
for (int i = 0; i < brickArray.length; i++) {
for (int j = 0; j < brickArray[i].length; j++) {
System.out.println(i - 1 + "," + j);
checkIfAllowed(i - 1, j);
}
}
}
public void checkIfAllowed(int row, int column) {
boolean incorrect = check(row) && check(column);
if (incorrect) {
System.out.println("Wall");
} else {
System.out.println("Road");
}
}
private boolean check(int index) {
return (index < 0 || index > board.getHeight());
}
Результат:
Обход:
-1,0
Road
-1,1
Road
-1,2
Road
-1,3
Road
0,0
Road
0,1
Road
0,2
Road
0,3
Road
1,0
Road
1,1
Road
1,2
Road
1,3
Road
2,0
Road
2,1
Road
2,2
Road
2,3
Road
В этом примере четыре верхние ячейки должны были напечатать «Стена», но они этого не сделали.
'check' в этом случае, кажется, подразумевает ** неправильный ** вместо ** правильный ** –
' return (index <1 || index> board.getHeight()); 'Вы понимаете, что' 0' является меньше, чем '1', правильно? – bradimus
Где вы определяете 'board' и его метод' getHeight() '? – Dez