Operateur de comparaison et string.

Résolu
Azmatik -  
choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   -
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. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    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. KX Messages postés 19031 Statut Modérateur 3 020
       
      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. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
       
      oups ... bien vu, une erreur qui n'était pas juste
      0
  2. danimo
     
    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
  3. Azmatik
     
    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
  4. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    le javadoc est ton amie, utilise la
    0