2012-11-25 64 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); 
    }        
}