Я пытаюсь написать код, который будет принимать массив целых чисел и преобразовывать целые числа в нем в ключи массива объектов того же размера.Когда я запускаю его из класса метода main, я получаю исключение нулевого указателя.
В моем основном методе у меня есть 5 сеток (grid1, grid2 ... grid5) с данными в виде сетки int [] [].В одном из моих классов конструктор принимает сетку в качестве параметра, а затем вызывает метод createArrayFromArrayObject (int [] [] grid), который должен взять сетку из метода main, а затем преобразовать ее целые числа в ключи для объектаметод, используемый конструктором.
См. Ниже - я написал код вместе с тем, где появляется ошибка.Вызов определенных сеток из основного метода IDSearch: IDSearch ids = new IDSearch ();
SearchNode g1 = new SearchNode(grid1);
SearchNode g2 = new SearchNode(grid2);
SearchNode g3 = new SearchNode(grid3);
SearchNode g4 = new SearchNode(grid4);
SearchNode g5 = new SearchNode(grid5);
ids.goalSearch(g1);//I get an error message here
ids.goalSearch(g2);
ids.goalSearch(g3);
ids.goalSearch(g4);
ids.goalSearch(g5);
SearchNode(int [][] grid){
nodesMatrix = createArrayFromArrayObject(grid);//and then here
for (int i=0; i<15; i++) {
for (int j=0; j<15; j++) {
if(nodesMatrix[i][j].getElement() == 2) {
xStart = i;
yStart = j;
}
if(nodesMatrix[i][j].getElement()==3) {
xGoal=i;
yGoal=j;
etc.etc.
public static Node [][] createArrayFromArrayObject(int [][] grid) {
Node [][] nodesMatrix= new Node[15][15];
for(int i = 0; i < grid.length; i++){
for(int j = 0; j < grid.length; j++) {
nodesMatrix[i][j].setElement(grid[i][j]);//and then here
}
}
return nodesMatrix;
};
//and it throws a null pointer exception.
Ошибка переходит от основного метода класса IDSearch
к конструктору класса SearchNode в массив create изметод объекта массива.
Я пытаюсь выяснить, как это исправить, чтобы он получал доступ к данным сетки и не вызывал исключение нулевого указателя.