Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probléme pour la sortie d'une boucle do while

Sujet résolu
    20 janvier 2018 à 12:21:23

    Bonjour, 

    Je sollicite votre aide. Je début dans la programmation et je n'arrive pas résoudre mon petit problème avec une boucle do {}while();.Qui a deux paramètres en condition.

    J'ai une Fonction gagne qui me renvoi un boolean true ou false et une autre plein qui me renvoi aussi true ou false.

    Mon problème et que pour sortir de la boucle une des deux condition doit être vrai, mais chez moi ça ne fonction que lorsque les deux conditions sont vrai.  je vous mais un code d'essai 

    package essai;
    
    import java.util.Scanner;
    
    /**
     *
     * @author Jimmy
     */
    public class Essai {
        
        private static Scanner clavier = new Scanner(System.in); //Déclaration du scanner
        
        static int chiffre2; // Initialisation de la variable chiffre2  
    
    // Fonction qui return true ou false 
    
        static boolean cGagner(int chiffre){
           
          if(chiffre == 2){
               return true;
           }
           
           return false;
       }
       
    // Fonction qui return true ou false 
    
       static boolean  plein (int chiffre2){
           
           if (chiffre2 == 3){
               return true;
           }
           
           return false;
       }
    
    
      
        public static void main(String[] args) {
           
          //Initialisation des boolean 
            boolean gagne;
           
    // boucle principal 
    do{
                int chiffre, chiffre2;
                
                
                System.out.println("Entre un chiffre pour la fonction cgagner : "); 
                chiffre = clavier.nextInt();
                
                System.out.println("Entre un chiffre pour la fonction tPlein : ");
                chiffre2 = clavier.nextInt();
                
              gagne = cGagner(chiffre); // Appel la fonction cGagner
              
              
              System.out.println("affiche le resultat de gagne : " + gagne); //Affiche le resultat de gagne
              System.out.println("affiche le resultat de tPlein : " + plein(chiffre2); //Affiche le resultat de plein
                
            }while(!gagne || !plein(chiffre2);
           
           System.out.println("Je sort de la boucle"); //Message pour dire que je sort de la boucle
            
            if(gagne){
                System.out.println("Tu as gagner !!!!");
            }else{
                System.out.println("Tu as perdu !!!!");
    }
            
        }
        
    }
    

    voici ce que j'obtiens alors de mon test 

    run:

    Entre un chiffre pour la fonction cgagner : 

    1

    Entre un chiffre pour la fonction tPlein : 

    3

    affiche le resultat de gagne : false

    affiche le resultat de tPlein : true

    Entre un chiffre pour la fonction cgagner : 

    2

    Entre un chiffre pour la fonction tPlein : 

    4

    affiche le resultat de gagne : true

    affiche le resultat de tPlein : false

    Entre un chiffre pour la fonction cgagner : 

    2

    Entre un chiffre pour la fonction tPlein : 

    3

    affiche le resultat de gagne : true

    affiche le resultat de tPlein : true

    Je sort de la boucle

    Tu as gagner !!!!

    BUILD SUCCESSFUL (total time: 24 seconds)

    Merci d'avance pour votre aide et bonne journée.

    -
    Edité par jimmyNetron 20 janvier 2018 à 14:51:18

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2018 à 12:54:00

      Bonjour, il te suffit de remplacer ton OU (||) par un ET (&&).
      while(!gagne && !plein(chiffre2));

      Voila ;)
      • Partager sur Facebook
      • Partager sur Twitter
        20 janvier 2018 à 13:59:54

        Merci, Morin21

        Mais moi je veux sortir de la boucle soit si gagne et vrai ou soit si plien et vrai.

        En fait c'est pour faire un petit jeu de morpion donc soit un joueur gagne et je sort de la boucle soit la grille et pleine et je sort de la boucle.

        • Partager sur Facebook
        • Partager sur Twitter
          23 janvier 2018 à 5:24:10

          Salut,

          while(!gagne && !plein(chiffre2));

          "Tant que personne ne gagne ET que ce n'est pas plein, fait ceci"

          Autrement dit, il suffit qu'une des deux conditions soit fausse pour que l'ensemble soit faux et que l'on sorte de la boucle. Cela répond donc bien à ton problème, c'est bien ce dont il te faut.

          -
          Edité par _Florent_ 23 janvier 2018 à 5:34:38

          • Partager sur Facebook
          • Partager sur Twitter
          Contrôleur programmeur des finances publiques depuis le 01/10/18
            23 janvier 2018 à 9:27:13

            Bonjour,

            La condition pour sortir de la boucle est "gagne || plein".

            Mais dans le while, on indique la condition pour rester dans la boucle. C'est donc "not (gagne || plein)".

            On peut le laisser comme ça ou utiliser les règles de logique qui disent que le contraire de "A ou B" c'est "non A et non B" et on retrouve le résultat de Florent.

            • Partager sur Facebook
            • Partager sur Twitter
              23 janvier 2018 à 9:53:29

              Bonjour a tous, et encore merci pour les explications _Florent_ et brubru77 j'ai compris. Problème résolu mon jeu de morpion fonctionne bien.

              -
              Edité par jimmyNetron 23 janvier 2018 à 9:55:48

              • Partager sur Facebook
              • Partager sur Twitter

              Probléme pour la sortie d'une boucle do while

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown