Java Make объявляет и инициализирует 2d массив моего объекта

1

Я работаю над созданием программы, которая делает сетку случайного размера> 1, а затем случайным образом ставит стены внутри лабиринта. Затем программа должна найти маршрут от начальной точки до цели. Я использую поиск по ширине.

моя проблема в том, что я не мог найти способ хранения координат, поэтому я создал свой собственный класс Coord который имеет значение x и y. для части моего алгоритма мне нужно создать 2d-массив типа Coord

Я не могу заставить его работать, каждый раз, когда я пытаюсь запустить программу, я получаю ArrayIndexOutOfBoundsException. Я не знаю, почему и как выделить этот массив, и он необходим для моего алгоритма.

Вот код, который я пытаюсь запустить:

Coord[][] test2dArray = new Coord[3][3];
test2dArray = Coord.make2dArray(3, 3);

Это вызывает:

public class Coord {
int x;
int y;


public static Coord[][] make2dArray(int sizex, int sizey){
    Coord[][] array= new Coord[sizex][sizey];
    for(int x=0; x<sizex; x++){
        for(int y=0; x<sizey; y++){
            array[x][y] = new Coord(0,0);
        }
    }
    return array;
}

Пока у меня есть 1d-массив, работающий с этим кодом:

Coord[] testArray = Coord.makeArray(4);

Что вызывает:

public static Coord[] makeArray(int size){
    Coord[] array= new Coord[size];
    for(int i=0;i<size;i++){
        array[i]= new Coord(0,0);
    }
    return array;

}

Если бы вы могли помочь мне и объяснить, что происходит, это будет здорово! Большое спасибо за вашу помощь :)

  • 0
    Вы уверены, что не получаете ArrayIndexOutOfBoundsException а не NullPointerException ?
  • 0
    На какую строку выдается исключение?
Теги:
object
nullpointerexception

1 ответ

0
Лучший ответ

Линия

for(int y=0; x<sizey; y++)

должно быть

for(int y=0; y<sizey; y++)

Условие y<sizey необходимо, чтобы остановить y слишком большим и вызывать ArrayIndexOutOfBoundsException. Ваша опечатка означает, что y не остановлен.

  • 0
    это было ArrayIndexOutOfBoundsException мой плохой для перечисления неправильного исключения
  • 0
    Есть ли более краткий способ использовать этот код? Coord[][] test2dArray = new Coord[3][3]; test2dArray = Coord.make2dArray(3, 3);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню