检查无限循环。我正在使用布尔变量

时间:2012-07-26 06:43:36

标签: loops while-loop boolean using infinite

我使用以下代码:

boolean continueProcessing = true;  
boolean lastRecord = false;     
while (continueProcessing)  //can it be changed to while (continueProcessing == true), what's the advantage  

{  
if(refListItemItr.hasNext() || lastRecord)  
{  
continueProcessing = true;  
lastRecord = false;  
}  
else  
{  
continueProcessing = false;  
}  

if(continueProcessing)  
{  
lSynonymListType = objFactory.createSynonymListType();  
}  
}  

我怀疑存在无限循环的情况。我该如何确认它不会发生。

1 个答案:

答案 0 :(得分:2)

这会导致无限循环的原因是你一直在检查下一个项目是否存在,但你实际上从未调用next()来检索它,所以内部指针不会移动而你只是在检查是否列表中有第一项。

无论如何,你过度复杂了。你应该做的只是

while (refListItemItr.hasNext()){
  Object item = refListItemItr.next(); // change Object to the item's type
  // Presumably actually do something with the item here, which currently you're not...
}

或者,更简单地说

for (Object o : refListItemItr){
  // do stuff
}

在回答您的其他问题时,while(continueProcessing)while (continueProcessing == true)

之间绝对没有区别