Partage
  • Partager sur Facebook
  • Partager sur Twitter

Scanner + if = illogique

Non reconnaissance de 2 string identiques

    21 mai 2018 à 19:43:51

    Bonsoir tout le monde, j'espère que tout va bien chez vous ;-)

    De mon côté j'étais entrain de programmer tranquillement quand soudain, je suis tombé sur ça :

    package testVersionPions;
    import java.util.Scanner;
    
    public class TestForPions {
    
    	public static void main(String[] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		
    		String A = sc.nextLine();
    		String B = sc.nextLine();
    		
    		if (B == A) {
    				
    	               System.out.println("WTF");
    						
    		}
    		
    	}
    
    }

     Ce qui me semble logique : Si je tape 'lol' deux fois dans la console, "WTF" devrait s'afficher

    Ce que j'obtiens : Ba rien ...

    Est-ce que ça fait pareil chez vous ? Qu'est ce que je n'ai pas compris ?

    Merci pour votre aide et bonne soirée ;-)



    • Partager sur Facebook
    • Partager sur Twitter
      21 mai 2018 à 20:19:34

      Salut,

      Avec un String.equals(String) c'est mieux :D

      package testVersionPions;
      import java.util.Scanner;
       
      public class TestForPions {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
               
              String A = sc.nextLine();
              String B = sc.nextLine();
               
              if (B.equals(A)) {
                 System.out.println("WTF");         
              }
          }
      }



      • Partager sur Facebook
      • Partager sur Twitter
        21 mai 2018 à 22:17:15

        En fait tu compare les adresse en faissant == alors que si tu veux comparer le contenu tu dois utiliser la méthode .equals en faisant attention de ne pas l'appeler avec un objet "null"

        -
        Edité par Splintz 21 mai 2018 à 22:18:18

        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2018 à 11:07:05

          Okeeeey,

          Merci beaucoup tous les deux.

          Après, qu'est-ce qu'une adresse ? Pourquoi cela fonctionne avec des int ?

          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2018 à 11:42:48

            Une adresse c'est l'endroit ou est rangé ton objet en mémoire. Quand tu compares deux String avec "==" tu regardes si c'est le même objet. Deux objets peuvent avoir les mêmes valeurs sans pour autant être identique.

            Vu que les int sont des types primitifs (donc pas des objets) le "==" compare leur valeur et non pas l'adresse.

            -
            Edité par Xaaav67 22 mai 2018 à 14:25:59

            • Partager sur Facebook
            • Partager sur Twitter
              22 mai 2018 à 18:23:56

              Oki, merci beaucoup Xaaav67, cette distinction manquait à mon bagage d'apprenti codeur.
              • Partager sur Facebook
              • Partager sur Twitter

              Scanner + if = illogique

              × 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