在while中使用if语句会中断Java中的循环

在while中使用if语句会中断Java中的循环,java,if-statement,while-loop,Java,If Statement,While Loop,我是Java新手,在while循环中使用if语句有问题 我编写的代码如下: while(lexicalizations.hasNext()) { myObject = lexicalizations.next().getObject(); language= myObject.getTermLanguage(); if (language.eq

我是Java新手,在while循环中使用if语句有问题

我编写的代码如下:

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

               }                             
           }
但是,只要if条件为true,程序就会执行其块,然后终止while循环。因此,其余项目未签出。 我怎样才能解决这个问题? 非常感谢

干杯,
阿雅

请注意,当您执行该println时,您将“使用”下一个元素,因此,如果只剩下一个元素,那么返回while时将为零。

每次调用
迭代器。next()
将迭代器移动到集合的下一个元素,因此,您必须非常小心,不要在每次迭代中多次调用此方法。必须将元素保存到局部变量中,并在整个循环体中使用该变量

为了系统地避免此类陷阱,请始终选择使用增强的for循环(如果适用):

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

您将移动到
if
语句块中迭代器中的下一个对象。要避免这种情况,只需使用
myObject
,您将“访问”每个对象:

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

为什么要在
if
中再次调用
词汇化.next()
。只需打印
myObject