这基本上就是我正在做的事情
while(true) //cant check for zero, there is more to do here
{
int val = 0;
for(SomeObject i : arrayListOfSomeObjects)
{
if(canDoSomething)
{
val++
}
}
if(val == 0)
{
break;
}
else
{
//do stuff with that nonzero value
}
}
很奇怪,因为循环不会产生。如同,如果不成功则停止。我有一个继续进行直到它完成,如果它没有做任何事情(或不符合我在该操作中的条件)它将不会改变值。意味着检查“val”应该打破循环。但事实并非如此。它只是去。我甚至在控制台上打印了“val”,但它返回0。
在该操作结束时,即使值为IS 0,它仍然继续!
答案 0 :(得分:0)
您的代码是正确的。请尝试以下操作..
int val = 1;
while(val>0)
{
//Some operation that will change the value IF successful
}
答案 1 :(得分:0)
第一个int val = 0
应该在循环之外,因为这会导致变量val
的值始终为零
答案 2 :(得分:0)
您可能需要通过添加标签来确保定位'正确'循环:
label: while(true) //cant check for zero, there is more to do here
{
// ...
if(val == 0)
{
break label;
}
// ...
}
如果检查是在另一个循环或while
语句中,这将确保您突破switch
循环。否则,我确信某些事情导致您未在示例中显示的问题。注意不必要的副作用。