Java 迭代器循环的奇怪打印行为
目前我正在为一个使用迭代器(BFS)检查连接性的图构建一个程序,但由于某种原因,每当我试图打印它时,检查连接性的方法都会以一种奇怪的方式运行 这是目前代码的外观:Java 迭代器循环的奇怪打印行为,java,loops,iterator,println,Java,Loops,Iterator,Println,目前我正在为一个使用迭代器(BFS)检查连接性的图构建一个程序,但由于某种原因,每当我试图打印它时,检查连接性的方法都会以一种奇怪的方式运行 这是目前代码的外观: public boolean isConnected() { for(int i=0;i<numVertices;i++) { Iterator<T> connection = iteratorBFS(i); int count = 0;
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;
}
它打印顶点的唯一原因是查看迭代器是否正常工作,显然是这样。然而,只要我注释掉System.out.println(connection.next),就不会打印任何内容。没有错误消息,什么也没有。我甚至尝试打印出驱动程序中直接连接的graph.isConnected,但它没有显示任何内容。在此之前,我尝试让它根据布尔结果的值在main方法中打印消息,但这也不起作用
我唯一想要打印出来的是最后一行,它表示图形是否连接。不幸的是,考虑到该方法现在的行为,如果我在中间循环注释测试行,则不会打印任何内容。
我做错什么了吗?为什么该方法的行为是这样的?如果您注释掉:
System.out.println(connection.next());
您仍然需要这样做:
connection.next();
否则连接将永远无法升级。您必须调用。下一步使用迭代器。删除system.out并保持连接。下一步()
connection.next();