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

avec Java Discussion :

Incident avec Break et switch


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut Incident avec Break et switch
    Bonjour, je ne comprends pas le comportement de java sur ce point

    avec ce code

    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
    21
    22
    23
    24
    25
    26
    27
    28
    import javax.swing.* ;
     
    public class Confirm1 
    {
     public static void main (String [] args)
     {
    	 final int NFOIS=5;
    		int i;
     
     
    	for (i=0;i<NFOIS;i++)
    	 {
    		 int rep= JOptionPane.showConfirmDialog(null, "Voulez-vous continuer ?");
    		 System.out.println("Reponse : " + rep);
    		 if (rep==1)
    		 {
    			 System.out.println ("Votre réponse est " + rep);
    		   break;
    		 }
    		else System.out.println ("Vous n'avez pas répondu non");
     
     
     
    	 }
    	System.out.println("Au revoir");
     
     }
    }
    si je clique sur "non" c'est à dire rep==1 le programme execute bien le break et sort.
    par contre si j'utilise ce nouveau code
    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
    21
    22
    23
    24
    25
    26
    27
    28
    import javax.swing.* ;
     
    public class Confirm1 
    {
     public static void main (String [] args)
     {
    	 final int NFOIS=5;
    		int i;
     
     
    	for (i=0;i<NFOIS;i++)
    	 {
    		 int rep= JOptionPane.showConfirmDialog(null, "Voulez-vous continuer ?");
    		 System.out.println("Reponse : " + rep);
    		 if (rep==1)
    		 {
    			 System.out.println ("Votre réponse est " + rep);
    		   break;
    		 }
    		else System.out.println ("Vous n'avez pas répondu non");
     
     
     
    	 }
    	System.out.println("Au revoir");
     
     }
    }
    ici si je clique sur "non" rep==1 la boîte de dialogue s'affiche n fois =5 fois donc.
    je ne comprends pas. Merci pour votre éclaircissement.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut erratum
    le deuxième code qui ne fonctionne pas avec break c'est celui ci désolé

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import javax.swing.JOptionPane;
     
     
    public class Confirm2 
    {
     
     
     public static void main (String [] args)
     {
    	 final int NFOIS=5;
    		int i;
     
     
    	for (i=0;i<NFOIS;i++)
    	 {
    		 int rep= JOptionPane.showConfirmDialog(null, "Voulez-vous continuer ?");
    		 System.out.println("Reponse : " + rep);
    		switch (rep)
    		 {
    		case 0 : System.out.println("Votre réponse est " + rep);
    			 	 break;
    		case 1 : System.out.println("Votre réponse est " + rep);
    		 		 break;
    		case 2 : System.out.println("Votre réponse est " + rep);
    		 		 break;
     
    		 }
     
    	 }
    	System.out.println("Au revoir");
     
     }
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    Salut,

    Ici ton break te fait sortir du bloc for.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for (i=0;i<NFOIS;i++)
    	 {
    		 int rep= JOptionPane.showConfirmDialog(null, "Voulez-vous continuer ?");
    		 System.out.println("Reponse : " + rep);
    		 if (rep==1)
    		 {
    			 System.out.println ("Votre réponse est " + rep);
    		   break;
    		 }
    ...

    Alors que dans ton deuxième code, le break sort du boc switch seulement.
    Tu continues dans à itérer sur ta boucle et à afficher la boite de dialogue.
    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
     
    for (i=0;i<NFOIS;i++)
    	 {
    		 int rep= JOptionPane.showConfirmDialog(null, "Voulez-vous continuer ?");
    		 System.out.println("Reponse : " + rep);
    		switch (rep)
    		 {
    		case 0 : System.out.println("Votre réponse est " + rep);
    			 	 break;
    		case 1 : System.out.println("Votre réponse est " + rep);
    		 		 break;
    		case 2 : System.out.println("Votre réponse est " + rep);
    		 		 break;
     
    		 }
     
    	 }
    Pourquoi ?
    Parce que le mot clef break (sans label) met fin au bloc switch, for, while, ou do-while qui l'englobe au plus près.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    dans le deuxième code, le break va sortir du switch et non pas de la boucle. Le break s'applique à la structure logique qui le concrene (for, while, switch) la plus imbriquée. Pour viser une autre structure englobante, il faut lui préciser lequel avec un label:

    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
     
    mainloop:
          for (i=0;i<NFOIS;i++)
    	 {
    		 int rep= JOptionPane.showConfirmDialog(null, "Voulez-vous continuer ?");
    		 System.out.println("Reponse : " + rep);
    		switch (rep)
    		 {
    		case 0 : System.out.println("Votre réponse est " + rep);
    			 	 break;
    		case 1 : System.out.println("Votre réponse est " + rep);
    		 		 break mainloop;
    		case 2 : System.out.println("Votre réponse est " + rep);
    		 		 break;
     
    		 }
     
    	 }

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut Ah ok
    Je comprends maintenant à vous deux.

    je pensais que if était aussi une instruction imbriquée et donc dans ce cas je ne comprenais pourquoi mon break sortait de la boucle For.

    merci pour le label, je n'était pas encore arriver à cette notion.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut correction
    je voulais dire merci à vous deux

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

Discussions similaires

  1. Souci avec un double switch
    Par Olivier Regnier dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2009, 19h53
  2. Temporisation en javascript avec Settimeout function switch case
    Par Le_castor_déchainé dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/01/2009, 23h46
  3. Incident avec OpenBaseDir
    Par francoisch dans le forum Langage
    Réponses: 1
    Dernier message: 23/04/2008, 19h20
  4. Probléme avec "break" et "continue"
    Par fredo3il dans le forum Débuter
    Réponses: 8
    Dernier message: 19/11/2007, 11h58
  5. break de switch conditionnel
    Par Gruik dans le forum C
    Réponses: 26
    Dernier message: 10/02/2007, 17h30

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