Я создаю программу на данный момент для графика, который использует итераторы (BFS) для проверки возможности подключения, но по какой-либо причине метод, проверяющий подключение, ведет себя странным образом, когда Я пытаюсь его распечатать.Странное поведение печати цикла Iterator
Вот как выглядит код на данный момент:
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 непосредственно в драйвере, и он ничего мне не показывает. До этого я пытался распечатать сообщение в основном методе в зависимости от значения логического результата, но это тоже не сработало.
Единственная вещь, которую я действительно хочу распечатать, это последняя строка, в которой указано, подключен ли граф или нет. К сожалению, учитывая, как метод ведет себя прямо сейчас, он ничего не печатает, если я прокомментирую тестовую строку в середине цикла while.
Я делаю что-то неправильно здесь? Почему метод ведет себя так?
Вы должны позвонить .next, чтобы использовать итераторы. Удалите system.out ans keep connection.next() –