Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comparer une entrée scanner

Sujet résolu
    17 octobre 2016 à 21:23:51

    Je viens de débuter de java mais l'un de mes code ne fonctionne pas (du moins le "if...else if...else" )qui est censé comparer une entrée clavier avec un "String".

    Voici mon code:

     public static void main(String[] args) {
          
           boolean continueTest = true;
           do{                                                                      //boucle mère
          
            System.out.println("Quelle age a-tu?");
            
             Scanner age_scanner = new Scanner (System.in);                         //Eécupere  l'âge de l'utilisateur 
             int age = age_scanner.nextInt();                                       //La valeur reçu est stocké dans la variable "age"
             
             if(age <18)
             {
             System.out.println ("Vous avez "+age+" Ans, vous êtes donc MINEUR");
             }
             else if(age>=18)
            {
             System.out.println ("Vous avez "+age+" Ans, vous êtes donc MAJEUR");
            }
             System.out.println ("Voulez-vous recommencez? (YES/NO)");
             
             Scanner continue_scanner = new Scanner (System.in);   
             String continue_Test = continue_scanner.nextLine(); 
             
                    if(continue_Test=="YES")                                          //Modifie la valeur de continueTest suivant la réponse
                    {
                        continueTest=true;
                        
                    }
                    else if(continue_Test=="NO") 
                    {
                        continueTest = false; 
                     
                    }
                    else
                    {
                          System.out.println("Coucou ya un problème!");
                    }
             System.out.println(continueTest);
                    
             }while(continueTest);                                                   //La boucle mère se relance jusq'a ce que "coninueTest" soit fausse
                   }
        }        


     

    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2016 à 22:01:07

      Bonjour,

      Pour comparer des objets (ici des String), il faut utiliser la méthode equals.

      if (reponse.equals("Oui")) {
          // faire quelque chose
      }


      http://thecodersbreakfast.net/index.php?post/2008/02/22/24-comparaison-des-chaines-accentuees-en-java

      • Partager sur Facebook
      • Partager sur Twitter
        17 octobre 2016 à 23:37:30

        Yo,

        Euh, alors... Il faut que tu considère que les types primitifs (int, char, ...) sont des cas particulier. En fait leurs comparaison est probablement codé en dur dans ton processeur, et fonctionne, à priori, bit à bit.

        Dans le cas d'un objet (si tu n'as pas encore vu la notion d'objet, relis mon post plus tard), Java le traite differemment. Lorsque tu écris

        int i = 1 ;

        Ton entier i est la case mémoire ou est stoqué le binaire de 1. Lorsque tu écris

        String s = "Salut !"


        Ici s est en fait une case mémoire contenant la localisation mémoire de s. En C, par exemple, c'est la notion de pointeur.

        Du coup, pourquoi "==" ne marche pas ? Et bien c'est la case mémoire qui est comparé, et non la chaine de char. La seule manière d'obtenir un true est donc

        if ( s == s )

        Ce qui est un peu trompeur en Java c'est que pour des raisons de rapidité d'écriture, les String sont traités comme des primitifs alors que ce sont des Objets.

        Comme l'a expliqué mon VDD, si tu veux obtenir une comparaison entre deux objets, tu dois utiliser la méthode "equals". Chaques objets de la bibliothèque Java possède une méthode "équals" qui prend en paramètre un objet du même type et le compare avec lui même.

        Si je peux te donner un conseil, lorsque tu auras avancé dans le cours, fais un tour dans les bibliothèques Java, elles sont excellente et très pratique. Pour des codes simple, un informaticien avertit peut facilement diviser par deux son temps de travail et son efficacité en les utilisant !

        Bon courage !

        • Partager sur Facebook
        • Partager sur Twitter

        Comparer une entrée scanner

        × 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