0

我是 Java 新手,在 while 循环中使用 if 语句时遇到问题。

我写的代码如下:

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

               }                             
           }

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

干杯,阿亚。

4

3 回答 3

1

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

为了系统地避免这种陷阱,总是喜欢在适用的情况下使用增强的 for循环:

for (String lex : lexicalizations) {
  ... your code uses lex here ...
}
于 2012-11-25T13:59:27.817 回答
0

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

于 2012-11-25T13:59:02.220 回答
0

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

while (lexicalizations.hasNext())           
{
   myObject = lexicalizations.next().getObject();
   language= myObject.getTermLanguage();
   if (language.equals(languageCode)) {
      System.out.println(myObject);
   }                             
}
于 2012-11-25T14:00:59.217 回答