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 :

"if else" : break / continue


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut "if else" : break / continue
    Bonjour, je voudrais savoir comment je peux sortir d'un block "if" sans passer par return, comme un break dans une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    private void saisir(Composant comp) {
     if (comp.nom.equals("unComp") {
      if ( comp.valeur == null ) {
       break; // retourner à la racine de la méthode
      }
      else {
       // Traitement
      }
     }
     if (comp.nom.equals("UnAutreComp") {
      if ( comp.valeur == autreTest ) {
       break; // idem
      }
      else {
       // Traitement
      }
     }
     // Traitement à faire dans tous les cas
    }
    Suis-je clair ?

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut
    pas vraiment, non !

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 398
    Par défaut
    Citation Envoyé par JohnNC
    Bonjour, je voudrais savoir comment je peux sortir d'un block "if" sans passer par return, comme un break dans une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    private void saisir(Composant comp) {
     if (comp.nom.equals("unComp") {
      if ( comp.valeur == null ) {
       break; // retourner à la racine de la méthode
      }
      else {
       // Traitement
      }
     }
     if (comp.nom.equals("UnAutreComp") {
      if ( comp.valeur == autreTest ) {
       break; // idem
      }
      else {
       // Traitement
      }
     }
     // Traitement à faire dans tous les cas
    }
    Suis-je clair ?
    mmmmmmmmhhh ..... non
    si la condition est fausse tu rentres pas ds le if
    donc je vois pas trop, c'est pour eviter le else qui suit ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Bah pas vraiment, en fait je n'avais pas de "else", car les "//Traitement" sont assez volumineux, et je voulais éviter de rajouter des else un peu partout :/ (qui finissent en plus, avec l'indentation, par rendre le code plus vraiment lisible).
    Je cherchais donc un autre moyen, au cas où. Mais je viens de penser aussi que je peux extraire le "//Traitement" dans une méthode, ce qui m'allègerait un peu le code au passage.

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par JohnNC
    Mais je viens de penser aussi que je peux extraire le "//Traitement" dans une méthode, ce qui m'allègerait un peu le code au passage.
    Bon réflexe !

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    En ce genre de cas tu peux procéder en séparant la détection de la condition de son traitement, si je suis clair.

    Un exemple appliqué à ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    private void saisir(Composant comp) {
     boolean conditionok;
     
     conditionok = true;
     if (comp.nom.equals("unComp") {
      if ( comp.valeur == null ) {
       conditionok = false;
      }
     }
     if (comp.nom.equals("UnAutreComp") {
      if ( comp.valeur == autreTest ) {
       condtionok = false;
     }
     if (conditionok)
       // Traitement.
     // Traitement à faire dans tous les cas
    }
    Surprise ! Tu vois qu'il n'y a plus de else.

    Par contre cela oblige à faire gaffe à la série des tests, et ainsi tu arrives vite à un modèle chaîne de responsabilités.

  7. #7
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Par défaut
    Bonjour,

    tu peux aussi utiliser la négation de tes conditions et faire des "and" dans tes conditions pour n'avoir plus que 2 if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void saisir(Composant comp) {
     if ((comp.nom.equals("unComp")&&(comp.valeur != null)) {
       // Traitement
      }
     }
     if ((comp.nom.equals("UnAutreComp"))&&(comp.valeur != autreTest)) {
       // Traitement
      }
     }
     // Traitement à faire dans tous les cas
    }
    J'imagine que les 2 traitements sont défférents, sinon tu peux encore rajouter des "and" --> &&, mais c'est un peu barbare pour la lecture, tout en ayant un avantage, si la 1ere condition est fausse tu ne fait pas les autres.

    Fk

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Break / continue
    Par schniouf dans le forum Langage
    Réponses: 45
    Dernier message: 30/01/2007, 21h19
  2. break/continue
    Par Nomade95000 dans le forum Oracle
    Réponses: 6
    Dernier message: 03/01/2006, 17h22

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