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 (つまり) 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 およびアセンブリから派生したルートがあり、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

したがって、同時に 2 つのループから抜け出したい場合は、2 つの Break を使用する必要があります。つまり、内側のループに 1 つ、外側のループに 1 つです。

ただし、両方のループを同時に停止したい場合は、exit または return を使用する必要があります。

于 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 に答える
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 に答える