簡體   English   中英

為什么這個值在while循環中不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM