gpt4 book ai didi

java - 当我将此指针推到 Deque/ArrayList 上时,如果它显然不是 Null,为什么会出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 07:11:22 25 4
gpt4 key购买 nike

所以我正在尝试做一个简单的迷宫求解器(深度优先)。我不需要帮助解决递归方法,但由于某种原因,这会导致 NullPointerException 出现在单元格的 ArrayList 的 .add 上,任何人都可以帮助我知道为什么吗? (MazeExample 类创建了一个简单的 N S E W 指针迷宫,由我的老师提供,以便我们可以尝试测试我们的代码)。

public static void main(String[] args)
{
MazeSolver solver = new MazeSolver();
ExampleMaze example = new ExampleMaze();

System.out.println(solver.stepsToSolveMaze(example.getStart()));

}

这是主要部分,这里是 MazeSolver 对象(截至目前,它只计算到最后的移动次数,一次一步)。

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;

}

最佳答案

您没有初始化数组List。

在stepsToSolveMaze中添加以下内容

visitedCells = new ArrayList<MazeCell>();

然后添加元素

关于java - 当我将此指针推到 Deque/ArrayList 上时,如果它显然不是 Null,为什么会出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15471497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com