[英]Why wont this value work in a while loop?
這本質上就是我在做什么
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。
在該操作結束時,即使值是0,它也會繼續前進!
您的代碼是正確的。請嘗試以下操作。
int val = 1;
while(val>0)
{
//Some operation that will change the value IF successful
}
first int val = 0
應該位於循環之外,因為這將導致變量val
的值始終為零
您可能需要通過添加標簽來確保定位“正確”循環:
label: while(true) //cant check for zero, there is more to do here
{
// ...
if(val == 0)
{
break label;
}
// ...
}
這樣可以確保在檢查處於另一個循環或switch
語句的情況下退出while
循環。 否則,我確定某些原因導致了您的示例中未顯示的問題。 當心不必要的副作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.