2010-04-15 81 views
17

在原始條件變爲false之前,有沒有辦法擺脫while循環?在原始條件變爲false之前,有沒有辦法擺脫while循環?

例如,如果我有:

while (a==true) 
{ 
    doSomething() ; 
    if (d==false) get out of loop ; 
    doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true() ; 
} 

是否有這樣做的方法嗎?

+8

我喜歡這個問題有答案5個字在... 我該如何'擺脫'這個循環? :) – RodeoClown 2010-04-15 22:46:43

+2

此外 - 而不是使用while(a == true),你可以使用while(a)。而對於if,你可以使用if(!d)。 – RodeoClown 2010-04-15 22:48:48

+2

問一個自我回答的問題,你會得到一個自我質疑的答案。 – Duncan 2010-04-16 00:30:03

回答

26

使用break statement

if (!d) break; 

注意,你並不需要在布爾表達式與truefalse比較。

+0

您可能不需要,但您可能想要提高可讀性。 – 2010-04-15 22:47:35

+10

@Matt:爲此,我寧願將變量名稱改爲更敏感的東西:) – BalusC 2010-04-15 22:48:21

+0

+ 1您的評論 – hhafez 2010-04-16 00:29:32

5

break是您正在查找的命令。

不要與布爾常量進行比較 - 它真的只是掩蓋了你的意思。以下是替代版本:

while (a) 
{ 
    doSomething(); 
    if (!d) 
     break; 
    doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true(); 
} 
1

是的,請使用break聲明。

while (a==true) 
{ 
    doSomething() ; 
    if (d==false) break; 
    doSomething_that_i_don't_want_done_if_d_is_false_but_do_if_a_and_d_are_true() ; 
} 
3

試試這個:

if(d==false) break; 

這就是所謂的 「無標籤」 break語句,其目的是終止whilefordo-while循環。

Reference here

+4

您不應該促進使用'== false'(和'== true'和'!= false'和'!= true')。 – polygenelubricants 2010-04-15 23:30:40

1
while(a) 
{ 
    doSomething(); 
    if(!d) 
    { 
     break; 
    } 
} 
0

執行以下操作 注意括號列入 - 其良好的編程習慣

while (a==true) 
{ 
    doSomething() ; 
    if (d==false) { break ; } 
    else { /* Do something else */ } 
} 
0
while (doSomething() && doSomethingElse()); 

改變你的方法,使得d==doSomething()a==doSomethingElse()返回簽名。如果你的循環逃脫了,它們必須已經有副作用。

如果您需要進行初始測試以確定是否啓動循環,您可以在前面投擲if