2012-11-25 93 views
0

我是Java新手,在while循環中使用if語句時遇到問題。使用if語句內部while打破Java中的循環

我寫的代碼如下:

  while(lexicalizations.hasNext())   
      { 
       myObject = lexicalizations.next().getObject(); 
       language= myObject.getTermLanguage(); 
       if (language.equals(languageCode)) { 
        System.out.println(lexicalizations.next()); 

       }        
      } 

然而,無論何時,如果條件爲真,則程序執行它的塊,然後終止while循環。所以,剩下的項目都沒有簽出。 我怎麼能解決這個問題? 非常感謝。

乾杯, 綾。

+3

你爲什麼要()'再'if'調用'lexicalizations.next。只需打印'myObject'。 –

回答

0

請注意,當您執行println時,您將「消耗」下一個元素,因此如果只剩下一個元素,那麼當您回到這個時候將會有零。

1

每次調用Iterator.next()都會將迭代器移動到集合的下一個元素,因此您必須非常小心,不要在每次迭代中多次調用此方法。您必須將該元素保存到局部變量中,並在整個循環體中處理該變量。

爲了系統地避免這種陷阱,總是喜歡每當適用於使用增強爲循環:

for (String lex : lexicalizations) { 
    ... your code uses lex here ... 
} 
0

if語句塊內移動到下一個對象的迭代器。爲了避免這種情況只使用myObject,你將「參觀」中的每個對象:

while (lexicalizations.hasNext())   
{ 
    myObject = lexicalizations.next().getObject(); 
    language= myObject.getTermLanguage(); 
    if (language.equals(languageCode)) { 
     System.out.println(myObject); 
    }        
}