私はパズルプログラムをコーディングしていました。 Javaプログラムをコンパイルすると成功しました。しかし、私がそれを実行すると、それは表示されます幅の最初の検索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));
}
}
}
こんにちは、ありがとうございます。これは役に立つアドバイスです。私はそれをトラブルシューティングし、私のchooseleafnode()が値を返さなかったことを知った。したがって、null。その後、別のクラスで変数の初期化が行われます。これは、2D配列がchoiceleafnode()に値を渡すことができないことと関係がある。私は1D配列に戻って動作します。 – lowerbound