IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Sortir d'une boucle for


Sujet :

Langage Java

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Points : 126
    Points
    126
    Par défaut Sortir d'une boucle for
    Bonjour,

    J'ai une boucle for, dès qu'une condition est réalisée, j'aimerais sortir de cette boucle, avant la fin de la boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0; i<10; i++)
    {
         if(i==5)
         {
            OK = true;
         }
         // Maintenant sortir de la boucle sans aller jusqu'à i=9
    }
    Cet exemple n'a bien sûr aucun sens, mais c'est pour visulaiser le problème.

    Qqun sait-il commentfaire?

    Merci pour votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 120
    Points
    120
    Par défaut
    voila une solution en concervant la boucle for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i = 0; i < 10; i++) {
      System.out.println(i);
      if(i == 5) break;
    }
    Maintenant, ca n'est à mon avis pas une bonne solution, il vaut mieux utiliser une boucle while avec deux conditions de sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    boolean boucle = true;
    int i = 0;
    while(boucle && i < 10) {
      System.out.println(i);
      if(i == 5) boucle = false;
      i++;
    }
    Edité pour ajouter une autre solution en concervant la boucle for et sans utiliser la commande break :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    boolean boucle = true;
    for(int i = 0; boucle && i < 10; i++) {
      System.out.println(i);
      if(i == 5) boucle = false;
    }

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 145
    Points : 125
    Points
    125
    Par défaut
    pour sortir d'une boucle, il faut utiliser l'instruction break;

  4. #4
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par mat360
    pour sortir d'une boucle, il faut utiliser l'instruction break;
    Non il n'est pas conseillé d'utiliser, l'instruction break, il vaut mieux utiliser un booléen...

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 109
    Points
    109
    Par défaut
    D'ailleurs, pourquoi n'est-ce pas conseillé?

  6. #6
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    Oui, ou même tout simplement (avec un while) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int i = 0;
    while(i != 5 && i < 10) {
      // instructions
      i++
    }
    Ca fait une variable en moins, et un test en moins à chaque tour...
    BlackWood
    Et comme apparemment, ça fait "class" dans une signature :
    , , , ,

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par Babaôrom
    D'ailleurs, pourquoi n'est-ce pas conseillé?
    Pour la lisibilité du code. Lorsque dans un programme on ecrit une boucle avec un nombre d'itération défini (boucle for) il n'est pas bon de générer des exceptions au milieu (break) qui viennent annuler le fontionnement logique.

    Dans l'exemple simple ci-dessus, il n'est pas difficile de voir que la boucle n'ira pas forcement à son terme, mais si le code devient plus compliqué une exception à la boucle for peut devenir difficile à voir.

    Si au début de la boucle toutes les conditions sont bien identifiées (while avec plusieurs conditions par exemple), l'analyse est plus facile.

    Ensuite, il existe peut être aussi des raisons plus "techniques" mais je ne les connais pas.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par BlackWood
    Oui, ou même tout simplement (avec un while) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int i = 0;
    while(i != 5 && i < 10) {
      // instructions
      i++
    }
    Ca fait une variable en moins, et un test en moins à chaque tour...
    Oui, mais le i == 5 était un exemple pas forcement la condition qu'il voulait réaliser donc la solution du boolean est plus générique.

  9. #9
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 109
    Points
    109
    Par défaut
    Citation Envoyé par bigben99
    Pour la lisibilité du code. Lorsque dans un programme on ecrit une boucle avec un nombre d'itération défini (boucle for) il n'est pas bon de générer des exceptions au milieu (break) qui viennent annuler le fontionnement logique.

    Dans l'exemple simple ci-dessus, il n'est pas difficile de voir que la boucle n'ira pas forcement à son terme, mais si le code devient plus compliqué une exception à la boucle for peut devenir difficile à voir.

    Si au début de la boucle toutes les conditions sont bien identifiées (while avec plusieurs conditions par exemple), l'analyse est plus facile.

    Ensuite, il existe peut être aussi des raisons plus "techniques" mais je ne les connais pas.
    C'est clair! Merci!

  10. #10
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par bigben99
    Oui, mais le i == 5 était un exemple pas forcement la condition qu'il voulait réaliser donc la solution du boolean est plus générique.
    Je te l'accorde. Mais une condition est une condition, que ce soit i==5 ou (s1.equals(s2) && myFrame.isVisible())...
    Enfin bref, les deux fonctionnent.
    BlackWood
    Et comme apparemment, ça fait "class" dans une signature :
    , , , ,

Discussions similaires

  1. Sortir d'une boucle for avant la fin
    Par sandball22 dans le forum C
    Réponses: 4
    Dernier message: 17/05/2011, 14h00
  2. [PHP 5.3] Comment sortir d'une boucle for en PHP ?
    Par beegees dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2009, 20h36
  3. [LV8.2] Sortir d'une boucle for principale
    Par GunNm99 dans le forum LabVIEW
    Réponses: 5
    Dernier message: 26/06/2009, 10h19
  4. Réponses: 6
    Dernier message: 02/07/2008, 09h06
  5. sortir d'une boucle FOR
    Par Cheorches dans le forum VB.NET
    Réponses: 6
    Dernier message: 08/08/2007, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo