我是Java的新手,我在while循环中使用if语句时遇到了问题。
我编写的代码如下:
while(lexicalizations.hasNext())
{
myObject = lexicalizations.next().getObject();
language= myObject.getTermLanguage();
if (language.equals(languageCode)) {
System.out.println(lexicalizations.next());
}
}
但是,只要if条件为真,程序就会执行其块,然后终止while循环。因此,其余项目未签出。 我怎么能解决这个问题? 非常感谢。
干杯, 绫。
答案 0 :(得分:1)
每次调用Iterator.next()
都会将迭代器移动到集合的下一个元素,因此您必须非常小心,不要每次迭代多次调用此方法。您必须将元素保存到局部变量中,并在整个循环体中使用变量。
为了系统地避免这种陷阱,总是喜欢在适用的时候使用增强的循环:
for (String lex : lexicalizations) {
... your code uses lex here ...
}
答案 1 :(得分:0)
请注意,当您执行该println时,您“消耗”下一个元素,因此如果只剩下一个元素,那么当您回到原点时将会为零。
答案 2 :(得分:0)
您正在if
语句块中移动到迭代器中的下一个对象。要避免这种情况,只需使用myObject
即可“访问”每个对象:
while (lexicalizations.hasNext())
{
myObject = lexicalizations.next().getObject();
language= myObject.getTermLanguage();
if (language.equals(languageCode)) {
System.out.println(myObject);
}
}