2013-11-21 5 views
1

Я создаю программу на данный момент для графика, который использует итераторы (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.

Я делаю что-то неправильно здесь? Почему метод ведет себя так?

+0

Вы должны позвонить .next, чтобы использовать итераторы. Удалите system.out ans keep connection.next() –

ответ

2

Если закомментировать:

System.out.println(connection.next()); 

Вам все еще нужно сделать, это:

connection.next(); 

В противном случае соединение не получает расширенный.

+0

Да, это решило проблему! Большое спасибо! – Vincents