Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我把这个指针推到一个Deque/ArrayList上,而它显然不是';t空_Java_Recursion_Nullpointerexception_Depth First Search - Fatal编程技术网

Java 当我把这个指针推到一个Deque/ArrayList上,而它显然不是';t空

Java 当我把这个指针推到一个Deque/ArrayList上,而它显然不是';t空,java,recursion,nullpointerexception,depth-first-search,Java,Recursion,Nullpointerexception,Depth First Search,所以我试着做一个简单的迷宫解算器(深度优先)。我不想帮助解决递归方法,但由于某种原因,这会导致ArrayList的.add单元格上thorw出现NullPointerException,有人能帮我知道原因吗?(MazeExample类制作了一个简单的指向NSEW的指针迷宫,由我的老师提供,以便我们可以尝试测试代码) 这是主要的,这里是MazeSolver对象(到目前为止,它只计算到最后的移动次数,一次一步) 公共类MazeSolver { 私有整数步长=0; 私有ArrayList访问单元; 私

所以我试着做一个简单的迷宫解算器(深度优先)。我不想帮助解决递归方法,但由于某种原因,这会导致ArrayList的.add单元格上thorw出现NullPointerException,有人能帮我知道原因吗?(MazeExample类制作了一个简单的指向NSEW的指针迷宫,由我的老师提供,以便我们可以尝试测试代码)

这是主要的,这里是MazeSolver对象(到目前为止,它只计算到最后的移动次数,一次一步)

公共类MazeSolver
{
私有整数步长=0;
私有ArrayList访问单元;
私人面包屑;
公共int stepsToSolveMaze(MazeCell单元)
{
visitedCells.add(cell);//这是引发异常的地方。
面包屑。推(细胞);
if(cell.isFinish())
{
返回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());
}
其他的
{
步骤--;
stepsToSolveMaze(breadCrumbs.pop());
}
返回步骤;
}

在您的示例中,从未设置visitedCells,因此当您尝试向其中添加项目时,会导致NullPointerException。您需要在使用它之前对其进行初始化:

visitedCells = new ArrayList<MazeCell>();
visitedCells=newarraylist();
另一方面,面包屑也会有同样的问题,所以您可能应该在您的工作时初始化它:

breadCrumbs = new Deque<MazeCell>();
breadCrumbs=new Deque();

您没有初始化数组列表

在步骤中添加以下内容:

visitedCells = new ArrayList<MazeCell>();
visitedCells=newarraylist();

然后添加元素

您没有初始化
visitedCells
您还没有初始化ArrayList和Deque。您只创建了引用。非常感谢,我现在觉得有点傻,但现在是时候感觉更傻了。修复后,我有一个堆栈溢出。下面是错误。线程“main”中出现异常java.util.LinkedList$节点的java.lang.StackOverflower。(未知源)java.util.LinkedList.linkFirst(未知源)java.util.LinkedList.addFirst(未知源)java.util.LinkedList.push(未知源)MazeSolver.stepsToSolveMaze(MazeSolver.java:16)MazeSolver.stepsToSolveMaze(MazeSolver.java:43和大约100多个第43行错误。我现在正在处理它,但我会感谢你的见解哦,我发现了,我在一个推-跳循环中,一个简单的如果修复了它的话!
breadCrumbs = new Deque<MazeCell>();
visitedCells = new ArrayList<MazeCell>();