两个while循环中的break语句

adr*_*ian 18 java break while-loop

假设我有这个:

while(a){

  while(b){

   if(b == 10)
     break;
 }
}
Run Code Online (Sandbox Code Playgroud)

问题: break语句是否会将我从两个循环中取出或仅从内循环中取出?谢谢.

Iva*_*lik 32

它只会破坏最直接的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");
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我会更进一步说,最好使用函数并简单地从内循环返回. (7认同)

Abh*_*mar 29

在你的示例中,break语句将带你离开while(b)循环

while(a) {

   while(b) {

      if(b == 10) {
         break;
      }
   }  
   // break will take you here.
}
Run Code Online (Sandbox Code Playgroud)

  • 如果我想在-A时打破怎么办? (4认同)
  • @oneofakind如果你想要打破两个循环,在第一个时候放一个像"outer"这样的标签,然后使用"break outer;" 打破这个水平.请参阅:https://gist.github.com/bseib/f5ee5c5baa31fa116feb715bd4037cb5 (3认同)

Jig*_*shi 11

只有从内部一个,如果你想打破特定的循环,使用带标记的中断

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

      if(condition2)
      break label2;//break innerloop
  }
}
Run Code Online (Sandbox Code Playgroud)

另见


Kum*_*tra 7

while (a) {

   while (b) {

      if (b == 10) {
          break;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

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

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

label1: 
while (a) {

   while (b) {

      if (b == 10) {
          break label1;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)


Viv*_*ath 5

它将打破立即封闭的循环。

但是,您可以断开标签:

myLabel:

while(a) {    
    while(b) {    
        if(b == 10)
            break myLabel;
    }
}
Run Code Online (Sandbox Code Playgroud)

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


Hig*_*ani 5

@阿布希舍库玛

Break关键字具有从C和Assembly派生的根,而Break的唯一目的是将控制权从复合语句(即Loop,Condition,Method或Procedures)中传递出去。

请参考这些...

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

因此,如果要同时退出两个循环,则必须使用两个Break,即一个在内部循环中,一个在外部循环中。

但是要同时停止两个循环,则必须使用exit或return。