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 :

Arrêter directement boucle WHILE quand condition plus valide


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Points : 51
    Points
    51
    Par défaut Arrêter directement boucle WHILE quand condition plus valide
    Bonjour,
    J'aimerais savoir s'il est possible d'arrêter une boucle while quand elle est entrain d'exécuter son traitement dès que la condition du while n'est plus respectée ? Je sais qu'il est possible de faire des if dans le while avant chaque instruction mais quelque chose de moins lourd? Moi je ferais donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    boolean verif = true;
     
    while (verif) {
      if (verif)
        System.out.println("etape1");
      if (verif)  
        System.out.println("etape2");
      if (verif)  
        System.out.println("etape3");
    }
    J'aimerais donc par exemple que si entre l'impression de "etape1" et l'impression de "etape2" le booléen verif est passé à false, on sorte directement du while sans afficher "etape2" et "etape3".

    Merci d'avance :-)

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Non, mais tu peux remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    while (verif) {
      if (!verif) {
        break;
      }
      System.out.println("etape1");
      if (!verif) {
        break;
      }
      System.out.println("etape2");
      if (!verif) {
        break;
      }
      System.out.println("etape3");
    }
    Comme ça tu sors dès le premier if où tu as détecté que la condition n'est pas respectée, au lieu de te taper toute la boucle jusqu'à la fin.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    En effet, le mot clé break te sert à sortir de la boucle en cours. Renseigne sur ce mot et tu devrais pouvoir faire ce que tu veux.

  4. #4
    Membre averti
    Homme Profil pro
    Java
    Inscrit en
    Mai 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 170
    Points : 444
    Points
    444
    Par défaut
    Citation Envoyé par druzy Voir le message
    En effet, le mot clé break te sert à sortir de la boucle en cours. Renseigne sur ce mot et tu devrais pouvoir faire ce que tu veux.
    Le goto aussi permet de sortir d'une boucle en cours ;-), mais déprécié de l'utiliser, tout comme des breaks.

    L'utilisation de multiples breaks / goto est synonymes d'une conception algorithmique ratée.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par kinaesthesia Voir le message
    Le goto aussi permet de sortir d'une boucle en cours ;-), mais déprécié de l'utiliser, tout comme des breaks.
    Techniquement il n'y a pas de goto en Java.
    Le problème du break est moins important.

    Citation Envoyé par kinaesthesia Voir le message
    L'utilisation de multiples breaks / goto est synonymes d'une conception algorithmique ratée.
    De fait, au lieu de break il vaut mieux un return ou un système d'exception.

    Mais ce n'est pas si important. Si tu dois faire un système qui répète une tâche mais doit s'arrêter dès qu'il se place dans un état précis, il n'y a pas 106 manières de le faire. Un système observateur/interruption permet de lutter contre la répétition de vérification/break/return, mais est bien trop compliqué en comparaison du problème, et c'est de la programmation par Exception, ce qui n'est pas très bien vu non plus.

    En réalité la solution c'est de découper la boucle en étapes qui répondent toutes à une interface commune (voire qui est un simple Runnable,) de considérer que chaque boucle est l'exécution d'une suite d'étape indiquée dans une List<Etap>, et de parcourir cette liste puis après chaque étape vérifier s'il faut continuer ou non.
    Mais :
    - ça fait deux boucles imbriquées et, sans break, la vérification doit être faite deux fois, une dans chaque boucle. C'est mauvais.
    - c'est peu flexible. Avoir une interface commune est très contraignant.
    - ça reste bien compliqué par rapport au problème. Ça se justifie mal.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    C'est vrai que je n'aime pas trop les break non plus et je ne les utilise que très rarement.

    Sinon je ne trouve pas que ta solution de départe soit lourde.

Discussions similaires

  1. Réponses: 13
    Dernier message: 03/03/2015, 11h52
  2. Arrêter une boucle while
    Par nanou2183 dans le forum Macro
    Réponses: 2
    Dernier message: 02/03/2012, 12h01
  3. Arrêter deux boucles while
    Par ABN84 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 30/04/2009, 10h51
  4. Arrêter une boucle (while) en cours d'exécution
    Par Cybberdupont dans le forum Langage
    Réponses: 19
    Dernier message: 26/06/2008, 14h24
  5. Réponses: 3
    Dernier message: 11/06/2006, 12h09

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