Как создать прямоугольный 2d массив в Java?

#java #arraylist

Вопрос:

Я пытаюсь создать клон сапера для школы и хочу создать переменный размер доски, приведенный ниже код работает для создания 2d-минного поля, но я получаю ошибку arrayIndex за пределами границ, когда столбцы != строки. Любая помощь будет признательна. Любительский код, так что любые другие советы приветствуются.

 public void genBoard(int columns, int rows) {
    board = new Tile[rows][columns];
    for (int y = 0; y < rows; y  ) {
        for (int x = 0; x < board[y].length   1; x  ) {
            board[x][y] = new Tile(x, y, 0, false);
        }
    }
}
 

Комментарии:

1. Вы поменялись строками и кольцами. По какой-то причине вы создаете и массив [rows][cols] (порядок аргументов метода замены). Затем вы y повторяете цикл снова rows и x снова. Наконец вы назначаете [x][y] [cols][rows] т. е.

2. Пожалуйста, не редактируйте свой вопрос, чтобы существенно изменить задаваемый вопрос, как только у вас будут ответы.

3. x < board[y].length 1 — почему 1 ?

4. @BoristheSpider Очень жаль, я только что заметил, что скопировал более старый сегмент кода, в настоящее время у меня возникли проблемы с кодом, на данный момент я должен удалить вопрос и создать новый пост?

5. Я бы задал новый вопрос, да. На этот вопрос есть одобренный ответ, который ссылается на код, который вы первоначально опубликовали. Пожалуйста, возьмите урок отсюда — приложите, по крайней мере, столько усилий, задавая свой вопрос, сколько вы ожидаете, что люди ответят на него; пожалуйста, прочитайте ваши вопросы!

Ответ №1:

 x < board[y].length   1;
 

должно быть

 x < board[y].length;
 

Это то, что вызывает ошибку привязки индекса.

Но также, board[x][y] должно быть board[y][x]