Operateur de comparaison et string.

Résolu
Bonjour,

Je débute en java et j'ai un petit problème, je n'arrive pas à comparer deux String, en gros ce que j'assaye de faire c'est par exmple :

réponse == "oui"

Où bien entendu réponse est une chaine de caractère.

4 réponses

  1. Modérateur
    Tu ne peux par faire de comparaison comme ça.

    String s = "oui";
    String t = "oui";

    if (s.compareTo(t) > 0) // ceci teste la valeur int retournée si elle est égale à zéro les deux string n'ont pas la même valeur de chaîne.

    Chouba, Modo CCM
    Rhâââgnagna
    2
    1. Modérateur
      Je me permets de rectifier: compareTo renvoie 0 si les deux chaînes sont égales, un nombre négatif si s est strictement inférieur à t, ou un nombre positif si s est strictement supérieur à t.
      Pour les String l'ordre correspond à un ordre lexicographique (celui du dictionnaire)

      Exemple :
      System.out.println("a".compareTo("b")); // -1
      System.out.println("e".compareTo("c")); // 2
      System.out.println("d".compareTo("d")); // 0

      De manière général pour savoir si deux objets ont la même valeur il faut utiliser la méthode Object.equals(Object) qui renvoie true si les valeurs sont identiques ou false sinon.
      Et s'il s'agit d'objets Comparable la méthode x.equals(y) est en général équivalente à faire le test x.compareTo(y)==0, c'est ce que l'on appelle la consistance (mais ce n'est pas obligatoire).

      En tout cas pour String, ça fonctionne :
      System.out.println(reponse.compareTo("oui")==0); System.out.println(reponse.equals("oui"));
      0
    2. Modérateur
      oups ... bien vu, une erreur qui n'était pas juste
      0
  2. Salut,

    Ou tout simplement:
     String reponse = "oui";
    			
             if(reponse.equals("oui"))
                System.out.println("C'est oui");
             else
                System.out.println("C'est pas oui");


    Ou bien autre exemple:
             String s1 = "oui"; 
             String s2 = "non"; 
          
             if(s1.equals(s2))
                System.out.println("ÉGALITÉ");
             else
                System.out.println("DIFF.");


    Cordialement,

    Dan
    1
    1. Merci beaucoup, ça marche niquel.
      Je me doutais bien qu'il devait y avoir une fonction réglant ce problème mais je n'avais pas réussi à la trouver, encore merci :)
      0
      1. Modérateur
        le javadoc est ton amie, utilise la
        0