Partage
  • Partager sur Facebook
  • Partager sur Twitter

Java débutant - problème avec une boucle

Sujet résolu
    30 octobre 2014 à 10:36:59

    BOnjour,

    Je m'exerce à la programmation Java depuis le livre du zéro, et dès le premier exercice, ça coince ... Un "simple" problème de boucle que je n'arrive pas à comprendre. Voici ma boucle :

    ("goon" est déclarée comme variable Script, sc comme un Scanner)

    goon="Q";
    			while (goon!="O" && goon!="N")
    			{	
    				System.out.println("Autre conversion ? O/N : ");
    				goon=sc.nextLine();
    				//goon="O";
    	
    			}

    Quand on saisit "O" ou "N", la boucle recommence, alors que si je décommente "//goon="O" ", on sort bien de la boucle. Je ne comprends pas, pourtant quand je vérifie la valeur de "goon" après saisie au clavier, elle est bien conforme à ce qui a été saisi (le Scanner fonctionne puisqu'avant dans mon code je l'utilise pour des variable de type "double").

    Pourquoi la méthode de saisie au clavier dans ce cas ne semble pas fonctionner (alors qu'en apparence ça fonctionne...) ?

    merci d'avance 

    -
    Edité par durahsel 30 octobre 2014 à 10:37:21

    • Partager sur Facebook
    • Partager sur Twitter
      30 octobre 2014 à 11:13:23

      Pour vérifier l'égalité des valeurs de deux objets on utilise la méthode equals(). L'opérateur != ou == va comparer les adresses mémoires des deux variables.

      • Partager sur Facebook
      • Partager sur Twitter
        30 octobre 2014 à 16:41:11

        merci pour l'explication de cette subtilité !

        donc j'ai résolu mon problème comme suit :

        goon="Q";
        			while (goon.equals("O")==false && goon.equals("N")==false)
        			{	
        				System.out.println("Autre conversion ? O/N : ");
        				goon=sc.nextLine();
        				//goon="O";
        				System.out.println(goon + ".");
        				
        
        			}

        résolu !

        (et encore merci)

        • Partager sur Facebook
        • Partager sur Twitter
          30 octobre 2014 à 18:44:07

          Bonsoir.

          Conseil au passage : plutôt que de faire test == false il est plus joli de faire !test

          • Partager sur Facebook
          • Partager sur Twitter
          Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
            31 octobre 2014 à 13:52:44

            Et plus jolie de faire ça :

            do{    
              System.out.println("Autre conversion ? O/N : "); 
              goon=sc.nextLine(); 
              System.out.println(goon + "."); 
              }while (!goon.equals("O")&& !goon.equals("N"));
            • Partager sur Facebook
            • Partager sur Twitter
              31 octobre 2014 à 15:01:46

              Perso, je suis pas fan du do while.

              D'une part parce qu'en 4 ans de travail, je n'en ai jamais vu. D'autre part parce que ça nous oblige à descendre à la fin de la boucle pour voir la condition.

              Après, c'est une question de gout.

              • Partager sur Facebook
              • Partager sur Twitter

              Java débutant - problème avec une boucle

              × 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