8

我有以下代码:

int x = 100; //Or some other value

while(x > 0) {

    for(int i = 5; i > 0; i++) {

        x = x-2;

        if(x == 0)
            break;

        }

}

但是,这只会破坏 for 循环。我怎样才能让它打破 for 和 while 循环?

干杯!

4

4 回答 4

6

您可以使用带标签的中断,它将执行重定向到标签标记的块之后

OUTER:
while(x > 0) {
    for(int i = 5; i > 0; i++) {
        x = x-2;
        if(x == 0)
            break OUTER;
    }
}

尽管在那种特定情况下,一个简单的break方法会起作用,因为如果x == 0while 也会退出。

于 2013-03-20T14:03:01.713 回答
1
bool done=false;
while(!done && x > 0) {
    for(int i = 5;!done &&  i > 0 ; i++) {
        x = x-2;
        if(x == 0){
            done=true;
            break ;
        }
    }
}
于 2013-03-20T14:06:30.123 回答
0

看这个例子

Outer:
    for(int intOuter=0; intOuter < intArray.length ; intOuter++)
    {
      Inner:
      for(int intInner=0; intInner < intArray[intOuter].length; intInner++)
      {
        if(intArray[intOuter][intInner] == 30)
        {
          blnFound = true;
          break Outer;
        }  

      }
    }
于 2013-03-20T14:03:46.300 回答
0

尽量避免中断,总是有另一种方法来编写你的循环,所以你不需要它,如果其他人必须修改你的代码,它会更“漂亮”并且更容易理解。在您的示例中,while 循环是不必要的,但可以向您展示它是如何可能的:

while(x > 0) {

  for(int i = 5; i > 0 && x!=0; i++) {

    x = x-2;

  }

}

如果 x 等于 0,则将离开 for 循环。然后将验证您的 while 条件:x 小于 0(为零),因此您的 while 循环也将停止执行。

于 2013-03-20T14:12:29.903 回答