web-dev-qa-db-fra.com

Briser la déclaration à l'intérieur de deux boucles while

Disons que j'ai ceci:

while(a){

  while(b){

   if(b == 10)
     break;
 }
}

Question: La déclaration de rupture me fera-t-elle sortir des deux boucles ou seulement de celle intérieure? Je vous remercie.

11
adrian

Dans votre exemple, l'instruction break vous fera sortir de la boucle while (b) 

while(a) {

   while(b) {

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

Il ne cassera que la boucle while la plus immédiate. En utilisant une étiquette, vous pouvez sortir des deux boucles: jetez un oeil à cet exemple tiré de ici


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");
  }
}
27
Ivan Koblik

uniquement à partir de la partie interne, utilisez le libellé break si vous souhaitez relier une boucle spécifique

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

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

Regarde aussi 

7
Jigar Joshi
while(a){

  while(b){

   if(b == 10)
     break;
 }
}

Dans le code ci-dessus, vous rompez la boucle inner most où (c.-à-d. immediate loop) où break est utilisé.

Vous pouvez rompre les deux boucles à la fois en utilisant break avec label

label1: 
       while(a){

                  while(b){

                      break label1;
                  }
              }
5
Kumar Vivek Mitra

@Abhishekkumar

Le mot-clé Break a sa racine dérivée de C et Assembly, et Break a pour seul objectif de passer le contrôle de l'instruction composée, à savoir Boucle, Condition, Méthode ou Procédures.

S'il vous plaît se référer ces ...

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

Donc, si vous voulez sortir de deux boucles en même temps, vous devez utiliser deux sauts, à savoir un dans la boucle intérieure et un dans la boucle extérieure.

Mais vous voulez arrêter les deux boucles en même temps, alors vous devez utiliser exit ou return.

4
Hignesh Hirani

Il va sortir de la boucle qui le ferme immédiatement.

Vous pouvez cependant casser une étiquette:

myLabel:

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

Je n'aime généralement pas utiliser ce modèle, car il conduit facilement au code spaghetti. Utilisez une pause sans étiquette ou un drapeau pour terminer votre boucle.

3
Vivin Paliath

Une instruction break vous fera sortir de la boucle la plus interne qui entoure cette instruction break.

Dans l'exemple, la boucle while interne.

1
Bhesh Gurung

L’instruction break Java ne veut pas vous sort de plusieurs boucles imbriquées.

0
main--

Comme remarque curieuse, dans PHP, l'instruction break accepte un paramètre numérique indiquant le nombre de boucles externes que vous souhaitez interrompre, comme ceci:

$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;
  }
}
0
Nelson