28

假设我有这个:

while (a) {
  while (b) {
    if (b == 10) {
      break;
    }
  }
}

问题: break 语句会将我带出两个循环还是仅从内部循环?谢谢你。

4

11 回答 11

38

在您的示例中,break 语句将带您退出 while(b) 循环

while(a) {

   while(b) {

      if(b == 10) {
         break;
      }
   }  
   // break will take you here.
}
于 2012-09-12T17:16:25.540 回答
34

它只会中断最直接的 while 循环。使用标签可以打破两个循环:看看这个例子取自这里


public class Test {
  public static void main(String[] args) {
    outerloop:
    for (int i=0; i < 5; i++) {
      for (int j=0; j < 5; j++) {
        if (i * j > 6) {
          System.out.println("Breaking");
          break outerloop;
        }
        System.out.println(i + " " + j);
      }
    }
    System.out.println("Done");
  }
}
于 2012-09-12T17:13:25.150 回答
12

只从内心。如果您希望中断到特定循环,请使用标记中断

label1:
for(){
  label2:
  for(){
      if(condition1)
      break label1;//break outerloop

      if(condition2)
      break label2;//break innerloop
  }
}

另见

于 2012-09-12T17:13:39.753 回答
6
while (a) {

   while (b) {

      if (b == 10) {
          break;
      }
   }
}

在上面的代码中,您将打破使用where (ie. ) where的最内层循环immediate loopbreak

您可以使用with一次中断两个循环breaklabel

label1: 
while (a) {

   while (b) {

      if (b == 10) {
          break label1;
      }
   }
}
于 2012-09-12T17:19:53.223 回答
6

@Abhishekkumar

Break 关键字源自C 和Assembly,Break 的唯一目的是将控制权从复合语句(即循环、条件、方法或过程)中传递出去。

请参考这些...

http://tigcc.ticalc.org/doc/keywords.html#break

http://www.functionx.com/cpp/keywords/break.htm

http://en.wikipedia.org/wiki/Break_statement#Early_exit_from_loops

因此,如果您想同时退出两个循环,那么您必须使用两个中断,即一个在内部循环中,一个在外部循环中。

但是你想同时停止两个循环,那么你必须使用退出或返回。

于 2012-09-13T12:50:38.477 回答
5

它将跳出立即包围它的循环。

但是,您可以打破标签:

myLabel:

while(a) {    
    while(b) {    
        if(b == 10)
            break myLabel;
    }
}

我一般不喜欢使用这种模式,因为它很容易导致意大利面条式代码。使用未标记的中断或标志来终止循环。

于 2012-09-12T17:13:53.430 回答
2

奇怪的是,在 PHP 中,break 语句接受一个数字参数,该参数告诉您要中断多少个外部循环,如下所示:

$i = 0;
while (++$i) {
   switch ($i) {
      case 5:
         echo "At 5<br />\n";
         break 1;  /* Exit only the switch. */
      case 10:
         echo "At 10; quitting<br />\n";
         break 2;  /* Exit the switch and the while. */
      default:
         break;
  }
}
于 2012-09-12T17:21:09.193 回答
2

您可以提出一个标志以将信息传递到外部 while 循环。在这种情况下,信息可以存储在一个变量中breakOuterLoopFlag,并且外部 while 循环根据该信息进行操作。见下面的伪代码:

int breakOuterLoopFlag = 0;

while(a){
   
  while(b){
      if(b == 10) {
        breakOuterLoopFlag = 1;
        break;
      }
    }

   if(breakOuterLoopFlag == 1) {
     break;
   }
}
于 2019-09-11T13:57:49.033 回答
1

一条break语句将带您脱离包含该break语句的最内层循环。

在示例中,内部 while 循环。

于 2012-09-12T17:14:03.803 回答
0

java break 语句不会让你脱离多个嵌套循环。

于 2012-09-12T17:13:44.710 回答
0

当然只有内循环。

于 2012-09-12T17:14:19.987 回答