Оператор Break внутри двух циклов while

Скажем, у меня есть это:

while(a){

  while(b){

   if(b == 10)
     break;
 }
}

Вопрос: вырвет ли оператор break из обоих циклов или только из внутреннего? Спасибо.

Ответ 1

В вашем примере оператор break выведет вас из while (b) loop

while(a) {

   while(b) {

      if(b == 10) {
         break;
      }
   }  
   // break will take you here.
}

Ответ 2

Он сломает только самый непосредственный цикл 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");
  }
}

Ответ 3

Только из внутреннего. Используйте помеченный разрыв, если вы хотите разорвать на определенный цикл

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

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

Также см

Ответ 4

while (a) {

   while (b) {

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

В приведенном выше коде вы разорвете внутренний цикл, где (то есть immediate loop), где используется break.

Вы можете разорвать обе циклы одновременно, используя break с label

label1: 
while (a) {

   while (b) {

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

Ответ 5

Он вырвется из цикла, который немедленно его включит.

Однако вы можете перейти к метке:

myLabel:

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

Мне обычно не нравится использовать этот шаблон, потому что он легко приводит к коду спагетти. Используйте немаркированный разрыв или флаг для завершения цикла.

Ответ 6

@Abhishekkumar

Разделите ключевое слово, получив его от C и Assembly, и разделите его единственную цель, чтобы передать управление из составного оператора i.e, 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

Итак, если вы хотите выйти из двух циклов одновременно, вы должны использовать два разрыва, т.е. один во внутреннем цикле и один во внешнем цикле.

Но вы хотите остановить оба цикла одновременно, тогда вам придется использовать exit или return.

Ответ 7

Оператор

A break выведет вас из самого внутреннего цикла, заключая в себе оператор break.

В примере внутренний цикл while.

Ответ 8

Как любопытная заметка, в 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;
  }
}

Ответ 9

Оператор java break не будет выводит вас из нескольких вложенных циклов.

Ответ 10

Конечно, только внутренний цикл.