Я кодировал программу-загадку. Когда я скомпилировал свою программу на Java, она прошла успешно. Но когда я запускаю его, он показываетwidthth first search java.lang.NullPointerException
Solution to problem using breadth first :
Exception in thread "main" java.lang.NullPointerException
at SolvingProblem.isGoal(SolvingProblem.java:24)
at AbstractTreeSearch.solve(AbstractTreeSearch.java:31)
at EightP.main(EightP.java:15)
Я провел несколько часов и исправил код, но безуспешно. В идеальном случае предполагается показать конфигурацию массива 3x3. Может ли кто-нибудь помочь мне здесь и указать, в чем проблема?
State initialState = new State(State.arrayA);
State GoalState = new State(State.arrayG);
@Override
public Object getInitialState() {
return initialState;
}
@Override
public boolean isGoal(Object state) {
return state.equals(GoalState);
}
Другой класс ниже
public Node solve(Problem problem) {
//initialize the search tree using the initial state of problem
frontier = initFrontier();
frontier.addAll(expand(new Node(problem.getInitialState()), problem));
//Starting frontier
boolean done = false;
Node solution = null;
while (!done) {
if (frontier.isEmpty()) {
System.out.println("Blank frontier");
done = true;
} else {
Node node = chooseLeafNode(frontier, problem);
//inspecting node
if (problem.isGoal(node.getState())) {
System.out.println("Solution found");
System.out.println();
solution = node;
done = true;
} else {
//Expanding node, frontier is..
frontier.addAll(expand(node, problem));
}
}
}
Hi xim, спасибо. Это полезный совет. Я устранил проблему и выяснил, что мой selectleafnode() не возвращает никакой ценности. Таким образом, null. Затем это приводит к моей инициализации переменной в другом классе. Это как-то связано с 2D-массивом, неспособным передать значение в selectleafnode(). Я вернулся к 1D массиву, и он работает. – lowerbound