2014-07-03 93 views
-1

我想有一個while循環,如果某個條件爲真,不要執行它下面的代碼,然後繼續while循環。 下面是一些僞代碼:我怎樣才能'爆發'的一個while循環,但仍然做while循環?

boolean poop 
while (poop){ 
    if (player.isAwesome()){ 
     Continue doing while loop but do not execute below code 
    } 
    poop = false; 
} 

是的,我可以用這樣的:

boolean poop 
while (poop){ 
    boolean stopPoop = false; 
    if (player.isAwesome()){ 
     stopPoop = true; 
    } 
    if (!stopPoop){ 
     poop = false; 
    } 
} 

然而,這是有點混亂和不便,我想知道是否有更好的辦法?

+2

使用'continue'。 –

回答

6
boolean poop = true; 
while (poop){ 
    if (player.isAwesome()){ 
     //Continue doing while loop but do not execute below code 
     continue; 
    } 
    poop = false; 
} 

是的,這是正確的使用continue關鍵字。如果你想跳出循環,你可以使用break關鍵字

如果你有嵌套循環,那麼你也可以繼續使用標籤。

+0

謝謝!這樣可行。 顯然我可以「你可以在5分鐘內接受答案」,所以我會接受它。 – Joehot200

+0

非常感謝 –

1

我假設你使用java編碼。 所有你需要做的是在你需要去while循環檢查語句行寫

continue; 

。所以:

boolean poop 
while (poop){ 
    if (player.isAwesome()){ 
     continue; 
    } 
    poop = false; 
} 
4

在這樣的情況下它是很難預測何時循環應被終止,我更喜歡使用

do { 
    if (player.isAwesome()){ 
     //Continue doing while loop but do not execute below code 
     continue; 
    } 
    // This code will only execute once 
} while (false); 

這消除了被污染的範圍布爾標誌的需要在循環之外。

我勸阻for (;;)while (true)因爲,時間一長,這種寫法代碼維護可以引入無限循環。

+0

非常有趣。我一定會牢記這一點! – Joehot200

+0

有趣的構造。 –

5

我沒有看到poop變量的需要。 你不能只用這個。

while (player.isAwesome()){ 

    Continue doing while loop but do not execute below code 
} 
+0

在我真正的代碼中,正是我所做的,但是我認爲使用已經存在的示例布爾值來執行psuedocode會更容易。 我的真實代碼是'while(stop == 1 || stop == -1)'。 只是爲了記錄,1是如果人點擊「取消」,另一個是如果他們點擊「關閉」。 – Joehot200