Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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 广度优先搜索错误_Java_Runtime Error_Directed Graph_Breadth First Search - Fatal编程技术网

Java 广度优先搜索错误

Java 广度优先搜索错误,java,runtime-error,directed-graph,breadth-first-search,Java,Runtime Error,Directed Graph,Breadth First Search,public int-bfs(int-maxDepth){//maxDepth=3有效..maxDepth=4给了我一个错误 int src=0; int dest=2; int nodes=arr[src].length-1; boolean[]已访问=新的boolean[节点+1]; int i; int countDepth=0; int countpath=0; int元素; queue.add(src); 而(!queue.isEmpty()| | countDepth!=maxDep

public int-bfs(int-maxDepth){//maxDepth=3有效..maxDepth=4给了我一个错误
int src=0;
int dest=2;
int nodes=arr[src].length-1;
boolean[]已访问=新的boolean[节点+1];
int i;
int countDepth=0;
int countpath=0;
int元素;
queue.add(src);
而(!queue.isEmpty()| | countDepth!=maxDepth)
{

element=queue.remove(); i=元素; while(i 0&&visted[i]==false) { 加入(i); 访问[我]=真实; if(arr[i][element]>0)//如果它有两个方向 访问[i]=错误; if(元素==dest | i==dest) countpath++; } i++; } countDepth++; } 返回路径; }
我试图在计算通往目的地的路径时,将深度设为“x”级

出于某种原因,我不断收到一个错误:

Exception in thread "main" java.util.NoSuchElementException at java.util.LinkedList.removeFirst(Unknown Source) at java.util.LinkedList.remove(Unknown Source) at Graph.bfs(Graph.java:48) 线程“main”java.util.NoSuchElementException中出现异常 位于java.util.LinkedList.removeFirst(未知源) 位于java.util.LinkedList.remove(未知源) 在Graph.bfs(Graph.java:48) 我不明白发生了什么事。当我进入3级深度时,它似乎起作用,但当我将其更改为4级时,它不起作用

变化

while(!queue.isEmpty()| | countDepth!=maxDepth)

while(!queue.isEmpty()&&countDepth!=maxDepth)

每个图都有一些最大深度。看起来,您将maxDepth设置为大于给定图形的实际可能值,并且即使在处理了所有可能的节点之后(即当队列为空时),您的循环也会尝试继续bfsing

更新 我会尽力回答你在评论中提出的第二个问题,即使给出的信息实际上还不够,所以,我会尽量显得多余=) 我想,您将计算
length=1
length=2..
的所有路径。我看到了
queue
数据结构,但没有看到声明-您是否对所有函数调用使用相同的队列?如果是,您应该在每次调用后清除队列(调用
queue.clear()的最佳位置是return语句之前)


另外,我看到您在每次调用中都使用了新的访问数组,这是正确的,但是如果您实际使用了一些全局访问,那么您也应该在每次调用后“清除”访问-换句话说,用false填充它

此函数中的哪一行是第48行?element=queue.remove()非常感谢。。。这就解决了错误。现在它输出了错误数量的正确路径。它应该打印出“4”,但它正在打印出“1”。当我执行3个级别时,它会打印出正确的路径,但我假设这是巧合,并且我的算法不正确。@juice,我想我解决了“NoTouchElementException”错误,但我无法回答您的第二个问题,因为您没有提供任务描述=)如果您想得到错误输出的答案,提供完整信息-代码、输入、预期输出、不正确输出、问题陈述e.t。c@juice字体你应该问你的新问题,而不是老问题上的骑手。(在撰写新问题时,你很有可能自己解决问题。这种情况经常发生。)@juice,请参阅更新。我的建议正确吗?如果是的话,我可以称自己为外星生物=) Exception in thread "main" java.util.NoSuchElementException at java.util.LinkedList.removeFirst(Unknown Source) at java.util.LinkedList.remove(Unknown Source) at Graph.bfs(Graph.java:48)