だから私は単純な迷路ソルバーをやろうとしています(最初に深さ)。再帰メソッドを解決する手助けはしたくありませんが、何らかの理由で、セルの ArrayList の .add で NullPointerException がスローされます。その理由を教えてもらえますか? (MazeExample クラスは、NSEW へのポインターの単純な迷路を作成します。これは、私の先生から提供されたもので、コードをテストすることができます)。
public static void main(String[] args)
{
MazeSolver solver = new MazeSolver();
ExampleMaze example = new ExampleMaze();
System.out.println(solver.stepsToSolveMaze(example.getStart()));
}
これがメインで、これが MazeSolver オブジェクトです (現時点では、一度に 1 ステップずつ、最後までの移動回数のみをカウントします)。
public class MazeSolver
{
private int steps=0;
private ArrayList<MazeCell> visitedCells;
private Deque<MazeCell> breadCrumbs;
public int stepsToSolveMaze(MazeCell cell)
{
visitedCells.add(cell); //this is where the exception is getting thrown.
breadCrumbs.push(cell);
if (cell.isFinish())
{
return 1;
}
if (cell.east() != null && !visitedCells.contains(cell.east()))
{
steps += stepsToSolveMaze(cell.east());
}
if (cell.south() != null && !visitedCells.contains(cell.south()))
{
steps += stepsToSolveMaze(cell.south());
}
if (cell.west() != null && !visitedCells.contains(cell.west()))
{
steps += stepsToSolveMaze(cell.west());
}
if (cell.north() != null && !visitedCells.contains(cell.north()))
{
steps += stepsToSolveMaze(cell.north());
}
else
{
steps--;
stepsToSolveMaze(breadCrumbs.pop());
}
return steps;
}