我正在构建一个程序,用于使用迭代器(BFS)来检查连接性的图形,但出于某种原因,每当我尝试打印时,检查连接的方法都会以奇怪的方式运行。 / p>
这就是代码目前的样子:
public boolean isConnected() {
for(int i=0;i<numVertices;i++) {
Iterator<T> connection = iteratorBFS(i);
int count = 0;
while(connection.hasNext()) {
count++;
System.out.println(connection.next());
}
if(count!=numVertices) {
System.out.println("The graph is disjoint.");
return false;
}
}
System.out.println("The graph is connected.");
return true;
}
输出如下:
A
B
C
D
B
A
C
D
C
B
D
A
D
B
C
A
The graph is connected.
它打印顶点的唯一原因是查看迭代器是否正常工作,显然它是。但是,只要我注释掉System.out.println(connection.next),就什么都不打印。没有错误信息,没有。我甚至尝试直接在驱动程序中打印出graph.isConnected,它没有向我显示任何内容。在此之前,我尝试在main方法中打印出消息,具体取决于布尔结果的值,但这也不起作用。
我唯一想要打印出来的是最后一行,它说明图表是否已连接。不幸的是,鉴于该方法现在的行为方式,如果我在循环中间注释出测试行,它将不会打印任何内容。
我在这里做错了吗?为什么方法表现得像这样?
答案 0 :(得分:2)
如果你发表评论:
System.out.println(connection.next());
你仍然需要这样做:
connection.next();
否则连接永远不会升级。