web-dev-qa-db-fra.com

Sortie d'une boucle for dans Java

Dans mon code, j'ai une boucle for qui parcourt une méthode de code jusqu'à ce qu'elle remplisse la condition for.

Est-il possible de sortir de cette boucle?

Donc, si nous regardons le code ci-dessous, que se passera-t-il si nous voulons sortir de cette boucle pour arriver à "15"?

public class Test {

   public static void main(String args[]) {

      for(int x = 10; x < 20; x = x+1) {
         System.out.print("value of x : " + x );
         System.out.print("\n");
      }
   }
}

Outputs:

value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19

J'ai essayé ce qui suit en vain:

public class Test {

   public static void main(String args[]) {
      boolean breakLoop = false;
      while (!breakLoop) {
          for(int x = 10; x < 20; x = x+1) {
             System.out.print("value of x : " + x );
             System.out.print("\n");
          if (x = 15) {
              breakLoop = true;
          }
          }
      }
   }
}

Et j'ai essayé une boucle:

public class Test {

   public static void main(String args[]) {
      breakLoop:
          for(int x = 10; x < 20; x = x+1) {
             System.out.print("value of x : " + x );
             System.out.print("\n");
             if (x = 15) {
                 break breakLoop;
             }
      }
   }
}

La seule façon dont je peux réaliser ce que je veux, c’est de sortir d’une boucle for, je ne peux pas la remplacer pendant un moment, faire, si, etc.

Modifier:

Cela n'a été donné qu'à titre d'exemple, ce n'est pas le code dans lequel j'essaie de le mettre en œuvre. J'ai maintenant résolu le problème en plaçant plusieurs instructions IF après le début de chaque boucle. Auparavant, il ne manquerait plus qu'une partie de la boucle en raison de l'absence de pause.

58
silverzx

break; est ce dont vous avez besoin pour sortir d'une instruction en boucle telle que for, while ou do-while.

Dans votre cas, ça va être comme ça: -

for(int x = 10; x < 20; x++) {
         // The below condition can be present before or after your sysouts, depending on your needs.
         if(x == 15){
             break; // A unlabeled break is enough. You don't need a labeled break here.
         }
         System.out.print("value of x : " + x );
         System.out.print("\n");
}
145
SudoRahul

Vous pouvez utiliser:

for (int x = 0; x < 10; x++) {
  if (x == 5) { // If x is 5, then break it.
    break;
  }
}
17
BloodShura

Si, pour une raison quelconque, vous ne souhaitez pas utiliser l'instruction break (par exemple, si vous pensez que cela va perturber votre flux de lecture, vous lirez votre programme par exemple), vous pouvez essayer les solutions suivantes:

boolean test = true;
for (int i = 0; i < 1220 && test; i++) {
    System.out.println(i);
    if (i == 20) {
        test = false;
    }
 }

Le deuxième argument d'une boucle for est un test booléen. Si le résultat du test est vrai, la boucle s'arrête. Vous pouvez utiliser plus qu'un simple test de mathématiques si vous le souhaitez. Sinon, une simple pause fera également l'affaire, comme d'autres l'ont dit:

for (int i = 0; i < 1220 ; i++) {
    System.out.println(i);
    if (i == 20) {
        break;
    }
 }
16
user2145100

Que diriez-vous

for (int k = 0; k < 10; k = k + 2) {
    if (k == 2) {
        break;
    }

    System.out.println(k);
}

L’autre moyen est une boucle intitulée

myloop:  for (int i=0; i < 5; i++) {

              for (int j=0; j < 5; j++) {

                if (i * j > 6) {
                  System.out.println("Breaking");
                  break myloop;
                }

                System.out.println(i + " " + j);
              }
          }

Pour une explication encore meilleure, vous pouvez vérifier ici

public class Test {

public static void main(String args[]) {

  for(int x = 10; x < 20; x = x+1) {
     if(x==15)
         break;
     System.out.print("value of x : " + x );
     System.out.print("\n");
  }
}
}
3
Achintya Jha