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 :

Problémes de conditions imbriquées


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Problémes de conditions imbriquées
    Bonjour,

    j'ai du mal avec mon code, c'est un exercice qui permet de deviner les champignons, en répondant par true et false, il ne respecte pas les conditions if et les exécute quand même donc j'ai plusieurs champignon notamment le coprin qui sors à tout les coups
    merci de m'aider
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    import java.util.Scanner;
     
    public class Champi{
     
        public static void main(String[] agrs) {
     
           boolean forest=false;
           boolean lamelles=false;
           boolean convexePres=false;
           boolean convexeforest=false;
           boolean agaric=false;
           boolean coprin=false;
           boolean anneau=false;
           boolean piedBlue=false;
           boolean amanite=false;
           boolean girolle=false;
           boolean cepe=false;
           int continued=1;
           System.out.println("Pensez a un champignon : amanite tue mouches, pied bleu, girolle,");
           System.out.println("cèpe de Bordeaux, coprin chevelu ou agaric jaunissant.");
     
           Scanner clavier = new Scanner(System.in);
           System.out.print("Est-ce que votre champignon vit en forêt (true : oui, false : non) ? ");
           forest = clavier.nextBoolean();
               if  (forest==false){
                System.out.print("Est-ce que votre champignon a un chapeau convexe 1 (true : oui, false : non) ? ");  
                convexePres= clavier.nextBoolean();
                }
            if ((convexePres==true) && (continued==1)){
                agaric=true;
                continued=0;
                }else{
                coprin=true;
                continued=0; }
     
     
            if (forest==true) {
                System.out.print("Est-ce que votre champignon a un chapeau convexe 2 (true : oui, false : non) ? ");  
                convexeforest= clavier.nextBoolean(); 
                continued=2;
     
                }
            if ((convexeforest==true) && (continued==2)){
                System.out.print("Est-ce que votre champignon a des lamelles (true : oui, false : non) ? ");
                lamelles= clavier.nextBoolean();}
            else{
                System.out.print("Est-ce que votre champignon a un anneau (true : oui, false : non) ? ");
                anneau=clavier.nextBoolean();}
     
            if ((anneau==true) && (continued==2)){
                amanite=true;
                continued=0;
                }
            if ((anneau=false) && (continued==2)){
                piedBlue=true;
                continued=0;
                }
            if ((lamelles==true) && (continued==2)){
                girolle=true;
                continued=0;
                }
            if ((lamelles==false) && (continued==2)){
                cepe=true;
                continued=0;
                }
     
     
            System.out.print("==> Le champignon auquel vous pensez est ");
            if (agaric==true) {
                System.out.print("l'agaric jaunissant");
            }
              if (coprin==true){
                  System.out.print(coprin);
                System.out.print("le coprin chevelu");
            }
              if (piedBlue==true){
                System.out.print("le pied bleu");}
     
            if (amanite==true)
                System.out.print("l'amanite tue-mouches");
     
            if (cepe==true){        
            System.out.print("le cèpe de Bordeaux");
            }
            if (girolle==true){
            System.out.print("la girolle");}
            }
        }

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Déjà avec un indentation correcte on peut lire le 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    import java.util.Scanner;
     
    public class Champi{
     
        public static void main(String[] agrs) {
     
            boolean forest=false;
            boolean lamelles=false;
            boolean convexePres=false;
            boolean convexeforest=false;
            boolean agaric=false;
            boolean coprin=false;
            boolean anneau=false;
            boolean piedBlue=false;
            boolean amanite=false;
            boolean girolle=false;
            boolean cepe=false;
            int continued=1;
            System.out.println("Pensez a un champignon : amanite tue mouches, pied bleu, girolle,");
            System.out.println("cèpe de Bordeaux, coprin chevelu ou agaric jaunissant.");
     
            Scanner clavier = new Scanner(System.in);
            System.out.print("Est-ce que votre champignon vit en forêt (true : oui, false : non) ? ");
            forest = clavier.nextBoolean();
            if  (forest==false){
                System.out.print("Est-ce que votre champignon a un chapeau convexe 1 (true : oui, false : non) ? ");
                convexePres= clavier.nextBoolean();
            }
            if ((convexePres==true) && (continued==1)){
                agaric=true;
                continued=0;
            }else{
                coprin=true;
                continued=0;
            }
     
     
            if (forest==true) {
                System.out.print("Est-ce que votre champignon a un chapeau convexe 2 (true : oui, false : non) ? ");
                convexeforest= clavier.nextBoolean();
                continued=2;
     
            }
            if ((convexeforest==true) && (continued==2)){
                System.out.print("Est-ce que votre champignon a des lamelles (true : oui, false : non) ? ");
                lamelles= clavier.nextBoolean();
            }
            else{
                System.out.print("Est-ce que votre champignon a un anneau (true : oui, false : non) ? ");
                anneau=clavier.nextBoolean();
            }
     
            if ((anneau==true) && (continued==2)){
                amanite=true;
                continued=0;
            }
            if ((anneau=false) && (continued==2)){
                piedBlue=true;
                continued=0;
            }
            if ((lamelles==true) && (continued==2)){
                girolle=true;
                continued=0;
            }
            if ((lamelles==false) && (continued==2)){
                cepe=true;
                continued=0;
            }
     
     
            System.out.print("==> Le champignon auquel vous pensez est ");
            if (agaric==true) {
                System.out.print("l'agaric jaunissant");
            }
            if (coprin==true){
                System.out.print(coprin);
                System.out.print("le coprin chevelu");
            }
            if (piedBlue==true){
                System.out.print("le pied bleu");
            }
     
            if (amanite==true)
                System.out.print("l'amanite tue-mouches");
     
            if (cepe==true){
                System.out.print("le cèpe de Bordeaux");
            }
            if (girolle==true){
                System.out.print("la girolle");
            }
        }
    }
    Ensuite,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            if ((convexePres==true) && (continued==1)){
                agaric=true;
                continued=0;
            }else{
                coprin=true;
                continued=0;
            }
    Le test sur continued dans ce bloc est inutile, car il vaut d'office 1 avant ce bloc et 0 après ce bloc. De plus ce code implique que dès que c'est en forêt ou que ce n'est pas convexe, c'est un coprin...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((convexeforest==true) && (continued==2))
    test sur continued inutile encore une fois. Si convexeforest alors continued =2 puisque les deux dont définis en même temps.

    Tu dois surtout commencer par prendre une feuille de papier et noter toutes les conditions à tester et dans quelles conditions c'est quel champignon. Fais toi une table de vérité, met tous tes tests verticalement, tes champignons horizontalement, et met des oui / non / on s'en fou sur chaque case pour voir tes critères.
    Ce n'est pas ton code le problème, c'est ta logique pour déterminer un champignon.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    le code me parait correct et ça marche pas, je pense que c'est le type de boolean qui pose probleme
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    import java.util.Scanner;
     
    public class Champi{
     
    	public static void main(String[] agrs) {
     
    	   boolean forest=false;
    	   boolean lamelles=false;
    	   boolean convexePres=false;
    	   boolean convexeforest=false;
    	   boolean agaric=false;
    	   boolean coprin=false;
    	   boolean anneau=false;
    	   boolean piedBlue=false;
    	   boolean amanite=false;
    	   boolean girolle=false;
    	   boolean cepe=false;
     
     
    	   System.out.println("Pensez a un champignon : amanite tue mouches, pied bleu, girolle,");
           System.out.println("cèpe de Bordeaux, coprin chevelu ou agaric jaunissant.");
     
           Scanner clavier = new Scanner(System.in);
           System.out.print("Est-ce que votre champignon vit en forêt (true : oui, false : non) ? ");
           forest = clavier.nextBoolean();
           	if (forest==true) {
            	System.out.print("Est-ce que votre champignon a un chapeau convexe 2 (true : oui, false : non) ? ");  
        	    convexeforest= clavier.nextBoolean(); 
        	    }if (convexeforest==true){
        	    	System.out.print("Est-ce que votre champignon a des lamelles (true : oui, false : non) ? ");
        	    	lamelles= clavier.nextBoolean();
        	    	}if (lamelles==true){
        	    		girolle=true;
        	    	}else{
                		cepe=true;
                }if (convexeforest==false){
                	System.out.print("Est-ce que votre champignon a un anneau (true : oui, false : non) ? ");
                	anneau=clavier.nextBoolean();
                	}if (anneau==true){
                		amanite=true;
                	}else{
                		piedBlue=true;}       
     
            if (forest==false){
            	System.out.print("Est-ce que votre champignon a un chapeau convexe 1 (true : oui, false : non) ? ");  
        	    convexePres= clavier.nextBoolean();
        	    }if (convexePres==true) {
            	agaric=true;
            	}else{
            	coprin=true;}
     
     
     
            System.out.print("==> Le champignon auquel vous pensez est ");
            if (agaric==true) {
            	System.out.print("l'agaric jaunissant");}
          	if (coprin==true){
          		System.out.print("le coprin chevelu");}
          	if (piedBlue==true){
            	System.out.print("le pied bleu");}
            if (amanite==true){
            	System.out.print("l'amanite tue-mouches");}
            if (cepe==true){        
            System.out.print("le cèpe de Bordeaux");}
            if (girolle==true){
            System.out.print("la girolle");}
            }
        	    }

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ben ton code il dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     		if (lamelles == true) {
     			girolle = true;
     		} else {
     			cepe = true;
     		}
    Ce qui se traduit par "un champignon est d'office une girolle ou un cepe"
    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     		if (anneau == true) {
     			amanite = true;
     		} else {
     			piedBlue = true;
     		}
    Un campignon est d'office une amanite ou un piedBlue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     		if (convexePres == true) {
     			agaric = true;
     		} else {
     			coprin = true;
     		}
    Et toujours dans la même veinne: un champignon est d'office un agaric ou un coprin.
    Bref, non, ton code n'est pas correct. Et si tu fais un effort sur l'indentation, tu verra tout de suite le problème.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     import java.util.Scanner;
     
     public class Champi {
     
     	public static void main(String[] agrs) {
     
     		boolean forest = false;
     		boolean lamelles = false;
     		boolean convexePres = false;
     		boolean convexeforest = false;
     		boolean agaric = false;
     		boolean coprin = false;
     		boolean anneau = false;
     		boolean piedBlue = false;
     		boolean amanite = false;
     		boolean girolle = false;
     		boolean cepe = false;
     
     
     		System.out.println("Pensez a un champignon : amanite tue mouches, pied bleu, girolle,");
     		System.out.println("cèpe de Bordeaux, coprin chevelu ou agaric jaunissant.");
     
     		Scanner clavier = new Scanner(System. in );
     		System.out.print("Est-ce que votre champignon vit en forêt (true : oui, false : non) ? ");
     		forest = clavier.nextBoolean();
     		if (forest == true) {
     			System.out.print("Est-ce que votre champignon a un chapeau convexe 2 (true : oui, false : non) ? ");
     			convexeforest = clavier.nextBoolean();
     		}
     		if (convexeforest == true) {
     			System.out.print("Est-ce que votre champignon a des lamelles (true : oui, false : non) ? ");
     			lamelles = clavier.nextBoolean();
     		}
     		if (lamelles == true) {
     			girolle = true;
     		} else {
     			cepe = true;
     		}
     		if (convexeforest == false) {
     			System.out.print("Est-ce que votre champignon a un anneau (true : oui, false : non) ? ");
     			anneau = clavier.nextBoolean();
     		}
     		if (anneau == true) {
     			amanite = true;
     		} else {
     			piedBlue = true;
     		}
     
     		if (forest == false) {
     			System.out.print("Est-ce que votre champignon a un chapeau convexe 1 (true : oui, false : non) ? ");
     			convexePres = clavier.nextBoolean();
     		}
     		if (convexePres == true) {
     			agaric = true;
     		} else {
     			coprin = true;
     		}
     
     
     
     		System.out.print("==> Le champignon auquel vous pensez est ");
     		if (agaric == true) {
     			System.out.print("l'agaric jaunissant");
     		}
     		if (coprin == true) {
     			System.out.print("le coprin chevelu");
     		}
     		if (piedBlue == true) {
     			System.out.print("le pied bleu");
     		}
     		if (amanite == true) {
     			System.out.print("l'amanite tue-mouches");
     		}
     		if (cepe == true) {
     			System.out.print("le cèpe de Bordeaux");
     		}
     		if (girolle == true) {
     			System.out.print("la girolle");
     		}
     	}
     }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    voici mon schéma
    Nom : Capture.JPG
Affichages : 326
Taille : 28,0 Ko
    pourquoi quand on réponds true oui (oui, à la question Est-ce que votre champignon vit en forêt (true : oui, false : non) ?)
    (forest==true)
    il va chercher aussi false? (forest==false)? je comprends pas. pourtant j'ai répondu true à la question (forest = clavier.nextBoolean();

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    par ce que dans ton code le test sur le non de convexe ne dépend pas du test sur la foret. Donc peux importe ce que tu a répondu à foret, il rentrera dans tous les cas dans le convexe = false. Bref ton schema ne correspond pas à ton code.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    comment faire alors pour ça fonctionne? pour l'inclure dans le code ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben regarde ton schéma, il est à plusieurs niveaux.

    Si foret, on part en haut, dedans on teste si convexe, tu dois retrouver la même chose dans ton code. Ce qui signifie en termes de code des ifs imbriqués


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (foret){
       if (convexe){ 
         agaric
       } else {
         coprin
       }
    } else {
       if (convexe){
         if (anneau){
         }
         //etc
       }
       //etc
    }

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    merci ça marche parfaitement. J'avais des difficultés à employer les imbriqués

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

Discussions similaires

  1. problème de conditions imbriquées
    Par hugodu28 dans le forum Langage
    Réponses: 1
    Dernier message: 29/11/2012, 20h02
  2. [Debutant]Problème de condition
    Par ghan77 dans le forum Langage
    Réponses: 9
    Dernier message: 13/12/2005, 15h20
  3. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  4. Problème de condition, je flanche..
    Par KibitO dans le forum Langage
    Réponses: 13
    Dernier message: 11/11/2005, 12h57
  5. Réponses: 6
    Dernier message: 17/08/2005, 12h38

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