Partage
  • Partager sur Facebook
  • Partager sur Twitter

boucle while qui ne fonctionne pas

    1 mars 2015 à 5:23:29

    Bonjour a tous la communaute ma quesiton est pourquoi quand je tape oui le programme ne se reexecute pas. 

    import java.util.Scanner;
    
    public class sdz1 
    {
    	public static void main(String[] args)
    	
    	{
    		//la variable qui contient le prenom
    		String prenom;
    		
    		//La variable qui contient le oui
    		String reponse = "oui";
    		
    		//Le scanner pour pouvoir ecrire et recuperer une saisie
    		Scanner sc = new Scanner(System.in);
    		
    		//Tant que la donner est egal a oui
    		while(reponse == "oui")
    		{
    			
    			//on demande le prenom
    			System.out.print("Quelle est le prenom ? ");
    			prenom = sc.nextLine();
    			
    			//On affiche la phrase ave le prenom
    			System.out.println("Bonjours " +prenom+ " comment va tu ?");
    			
    			//on demande si on veu reassayer
    			System.out.println("veu tu reassayer ? (oui/non)");
    			
    			//on recupere la reponse
    			reponse = sc.nextLine();
    		}
    		
    	}
    	
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
      1 mars 2015 à 5:45:22

      Salut,

      C'est certainement le 3000e sujet pour la même erreur mais bon...

       Réponse donnée ici entre autres (la flemme de mettre d'autres lien, y'a presque 1 sujet par jour pour ça...)

      letalkram a écrit:

      La raison est simple : on ne compare pas deux classes comme on compare deux types primitifs. Le == sur types primitifs (char, int...) fonctionne, mais pour des classes == signifie comparer les références, autrement dit : est-ce qu'il s'agit du même objet (stocké au même emplacement dans la mémoire RAM).

      Pour comparer si deux classes sont identiques on utilise la méthode equals. Donc

      if( str.equals(mdp) )

      Equals compare le "contenu" de la classe.

      Pour être encore plus précis  ça devrait être STRING_CONSTANTE.equals(saisie) pour éviter un NullPointer par exemple. Donc

      "oui".equals(reponse)



      • Partager sur Facebook
      • Partager sur Twitter
      :(){ :|:& };:
        1 mars 2015 à 5:48:23

        Utilise:

        while("oui".equals(reponse))

        l'operateur '==' compare les references (adresses memoire) alors que 'equals' compare les valeurs

        • Partager sur Facebook
        • Partager sur Twitter
        FuelDB => Base de donnée web temps réel avec websocket(Presentation)
          1 mars 2015 à 14:59:43

          Donc si on recapitule si je veu que la valeur d'une variable sois des lettre dans le if ou le while je doit y aller avec :

          "valeurDeLaVariable".equals(maVariable) 



          ses bien sa ?

          -
          Edité par korked 1 mars 2015 à 15:00:03

          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2015 à 16:14:25

            Oui, sauf si tu veux comparer deux variables. Dans ce cas, tu fais

            variable1.equals(variable2)

            Tu dois mettre en premier celle qui a le moins de chances d'être null.

            Et c'est valable pour tous les objets (pas juste les String).

            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2015 à 20:00:55

              Je rajouterais juste, en cas de problème, il y a tout dans la documentation ! (http://docs.oracle.com/javase/7/docs/api/)
              • Partager sur Facebook
              • Partager sur Twitter
                1 mars 2015 à 20:13:16

                brubru777 a écrit:

                Oui, sauf si tu veux comparer deux variables. Dans ce cas, tu fais

                variable1.equals(variable2)

                Tu dois mettre en premier celle qui a le moins de chances d'être null.

                Et c'est valable pour tous les objets (pas juste les String).

                Sauf si justement on souhaite que le programme plante avec un NullPointerException parce que la 1ère variable doit obligatoirement être non-nulle.
                • 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)
                  1 mars 2015 à 22:13:28

                  et si je veu que a  la place de equals tester linegalite je fais quoi ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 mars 2015 à 22:14:46

                    !variable1.equals(variable2)
                    Comme sur n'importe quel boolean.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    boucle while qui ne fonctionne pas

                    × 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