Partage
  • Partager sur Facebook
  • Partager sur Twitter

petit soucis avec la methode Scanner JAVA

je n'arrive pas à récupérer bien une chaine...

Sujet résolu
    14 février 2015 à 5:14:44

    Déjà bonjour à tous et merci de prendre du temps à lire mon soucis, minime je le sais bien mais pour le coup je ne comprend pas ce qui ne va pas...

    voilà mon code :

    package projettest;
    
    import java.util.Scanner;
    
    public class entreestandard {
    
    	private static Scanner sc;
    
    	public static void main(String[] args) {
    		System.out.println("quel est le mot de passe ?");
    		while(1 < 2)
    		{
    			sc = new Scanner(System.in);
    			String mdp = "toto";
    			String str = sc.nextLine();
    			if (str == mdp) // ca ne rentre jamais dans la condition peu importe ce que j'écris
    				break;
    			else
    			{
    				System.out.println("vous avez saisie " + str);
    				System.out.println("mauvais mot de passe, saisissez de nouveau:");
    				str = sc.nextLine();
    			}
    		}
    	}
    
    }
    

    Le soucis, comme vous avez pu le constater je pense avec mon commentaire, si je marque toto lors du String str = sc.nextLine(); , la condition if ne reconnait pas le toto et donc me demande de réécrire le mot de passe.

    Auriez vous une réponse par hasard svp, j'ai fais les autres chapitre du cour jusqu'au programme de conversion des températures (ce qui m'a prit une demi heure et encore c'est parce que je suis fatigué vu l'heure) mais pourtant je trouve aucune solution à ça :-(.

    Merci à vous en tout cas et désolé pour les fautes d'orthographe si y'en a, je ne suis pas un AS dans cette catégorie.

    -
    Edité par Sebastien sayada 14 février 2015 à 5:14:59

    • Partager sur Facebook
    • Partager sur Twitter
      14 février 2015 à 5:25:50

      Salut,

      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.

      • Partager sur Facebook
      • Partager sur Twitter
      :(){ :|:& };:
        14 février 2015 à 5:28:55

        Parfait je te remercie, je fais du C a la base (depuis un peu plus d'un an) et c'est pas comme ça du coup j'ai eu du mal à trouver. Merci j'ai testé et ça marche parfaitement ^^. Je vais enfin pouvoir aller me coucher
        • Partager sur Facebook
        • Partager sur Twitter

        petit soucis avec la methode Scanner JAVA

        × 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