ваша логика здесь отключена, поскольку i
считает через первое измерение и j
через второе: то, что вы действительно хотели, было
for(int i = 0; i < board.length; i++)
{
for(int j = 0; j < board[i].length; j++)
{
board[i][j] = '-';
}
}
этот вопрос, конечно, был в следующей строке:
for (int j = 0; j < board[j].length; j++)
Вы используете j
в качестве индекса первого измерения массива плат, но определяете его как значение, которое достигает максимальной длины, равной длине второго измерения. Что, конечно, открывает вам шанс получить индекс вне диапазона, что и дает этот код.
Причина, по которой у вас возникли проблемы, несмотря на то, что оба измерения одинаковы, заключается в том, что условие выхода из цикла for переоценивает каждый цикл.
Логика такова:
j < board[j].length
Итак, в 7 вы получите:
7 < board[7].length
, что совпадает с:
7 < 8
Отлично, он проходит, проходит через другой цикл, но что происходит в 8?
8 < board[8].length
Ну, 8 выходит за границы массива досок, поэтому он выдает исключение, он просто не может его оценить. переменная i
, однако, никогда не достигает 8, она останавливается на 7, поэтому в этом случае вы никогда не получите индекс вне границ.
Если бы вы сделали следующее, это сработало бы (но это плохо):
for(int j = 0; j < board[0].length; j++)