2010-04-15 84 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