2011-02-08 58 views
1
while(thingA is true) 
{ 
} 
if(thingA is not true) 
{ 
    make thingA true 
    then back to looping 
} 

我的問題是,如果循環是真的,那將不斷循環,但如果它不是我將通過aonther代碼,使其真實,在那之後我又希望它循環。我能做到這一點!?一個問題有關循環

+3

正如上面寫的你有一個無限循環! – 2011-02-08 20:05:20

回答

1

您提供的代碼塊實際上是一個無限循環。原因是因爲thingA保持truewhile循環,直到它的計算結果爲false並跳出循環。然後,它是由if語句來檢查,看它是否是false檢查 - 它必須是,或while循環就不會被打破。然後你循環更多一些。

只需檢查thingA在無限循環內是否爲假,並執行您的特殊情況邏輯。

5

我的問題是,如果你想循環,直到某些東西是假的,那麼一旦它的假設置爲真並重新循環,爲什麼檢查條件呢?爲什麼不只是:

while (true) 
{ 
    if (thingA is not true) 
    { 
     // do whatever you want 
    } 
} 

我的觀點只是,如果你想要做的就是讓它真正和重新循環,爲什麼要停止循環呢?

2

無論thingA的值如何(您總是會回到循環中),您所描述的將永遠循環。如果您需要的時候thingA的狀態發生改變,那麼你只需要採取一些行動:

while (1) 
{ 
    if (!thingA) { /* Some action */ } 
    ... 
} 
0

而不是重新安排您的代碼在同一功能,嘗試將通用代碼移動到一個單獨的功能。這將使你的代碼更容易理解和流動更易於理解。

在你的情況,你可能想是這樣的:

void MyLoopFunction() 
{ 
bool MyCheckVariable = true; 
while (MyCheckVariable) 
    { 
    ... 
    } 
} 

void SomeOtherFunction() 
{ 
// Keep executing until infinity 
while (true) 
    { 
    MyLoopFunction(); 
    // Fell out of the loop, do something else and retry 
    ... 
    } 
}