Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec while et String

Sujet résolu
    12 juin 2018 à 22:09:33

    import java.util.Scanner;
    public class Maths {
    public static void main (String[] args) {
    Scanner key = new Scanner(System.in);
    String reponse = "yes" ; 
    String prenom ; 
    while (reponse == "yes" ) {
    System.out.println("Entrez un prénom de votre choix ");
      prenom = key.nextLine();
    System.out.println("Bonjour Mr " + prenom + "." + " Comment vous portez vous ?");
    System.out.println("Voulez vous refaire ce exercice ? ");
    reponse = key.nextLine() ;
    }
    System.out.println("FIN DE L'EXERCICE ");
    }
    }
    En fait il s'agit là du premier code java testé dans le chapitre "Les boucles" du  cours " Apprenez à programmer en java " de Cyrille Herby. Sauf que moi j'ai utilisé une variable de type String (au lieu d'une variable de type char) pour récupérer la réponse de l'utilisateur. Mon souci est que quand je rentre "yes" comme reponse, le programme sort de la boucle alors que la boucle devrait se répéter. 
    Aidez moi SVP.
    • Partager sur Facebook
    • Partager sur Twitter
      12 juin 2018 à 23:07:45

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci d'utiliser la mise en forme de code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Image de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: c;">Votre code ici</pre>.

      • Partager sur Facebook
      • Partager sur Twitter
        13 juin 2018 à 11:06:40

        Ce n'est pas comme ca qu'on compare des chaines de caracteres en JKava. Regarde du cote de String.equals().
        • Partager sur Facebook
        • Partager sur Twitter
          13 juin 2018 à 11:07:19

          Bonjour,

          il aurait été plus agréable d'utiliser la balise permettant d'afficher du code. Après, ton code est relativement court, donc je me permet de te répondre quand même.

          Pour comparer des chaînes de caractères l'opérateur " == " ne fonctionne pas. Il est nécessaire d'utiliser la méthode "equals". Cette méthode permet de comparer deux objets entre eux. Le double égal va seulement permettre de comparer des types primitifs (int, double, boolean, char etc.).

          Je te laisse modifier ta condition en utilisant la bonne condition ainsi que la documentation liée à cette méthode.

          Si tu nécessite plus d'aide, n'hésite pas à demander.

          EDIT : Argh, pas assez rapide.

          -
          Edité par Shelemond 13 juin 2018 à 11:07:42

          • Partager sur Facebook
          • Partager sur Twitter
            13 juin 2018 à 14:21:08

            Bonjour à tous.

            Merci pour vos réponses. Comme vous l'avez dit, il fallait plutôt utiliser la méthode "equals" et non l'opérateur "==". 

            Le programme fonctionne maintenant.

            Merci à Thetui et Shelemond.

            Excellente journée à vous.

            • Partager sur Facebook
            • Partager sur Twitter
              13 juin 2018 à 14:29:00

              Excellente journée à toi aussi. Penses à marquer le sujet comme étant résolu, cela permet une meilleure vision du forum ;) (le bouton se trouve en haut à droite il me semble)

              Cependant, attention. Je ne sais pas dans quel sens tu as utilisé cette méthode, mais utilisée dans le mauvais sens, elle peut envoyer un "NullPointerException".
              Tu dois l'utiliser dans ce sens :

              if("yes".equals(reponse))

              Si tu l'utilises dans l'autre sens  (reponse.equals("yes")) , la chaîne reponse peut être null, et donc provoquer une exception.

              -
              Edité par Shelemond 13 juin 2018 à 14:31:08

              • Partager sur Facebook
              • Partager sur Twitter
                23 juin 2018 à 2:38:50

                Merci Shelemond pour ton apport. Je ne me rappelle pas dans quel sens je

                l'ai utilisé. Mais en tout cas le programme fonctionne correctement. Et c'est

                le plus important. Alors tu es développeur java ou tu apprends encore ?

                -
                Edité par zannou@007 23 juin 2018 à 2:41:15

                • Partager sur Facebook
                • Partager sur Twitter
                  23 juin 2018 à 18:06:50

                  De rien, c'est un plaisir :)

                  Après, le seul risque que tu encours c'est une exception non traitée et donc un programme qui plante...

                  Le plus important ce n'est pas qu'il fonctionne, c'est qu'il fonctionne ET qu'il soit bien codé ! En effet, une application mal codée peut planter, et donc le programme ne fonctionnera plus. C'est pour ça qu'il est important de ne pas négliger la qualité de son code.

                  Alors actuellement, je suis encore étudiant en licence pro, donc j'apprends encore ;)

                  -
                  Edité par Shelemond 23 juin 2018 à 18:07:17

                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 juin 2018 à 14:31:21

                    Bonjour Shelemond. 

                    Merci des conseils. 

                    Cool ta formation. Je suppose que c'est une License en génie logiciel.

                    En tout cas, très bonne suite dans ton cursus.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème avec while et String

                    × 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