Operateur de comparaison et string.

Résolu
Azmatik -  
choubaka Messages postés 39442 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

choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
oups ... bien vu, une erreur qui n'était pas juste
0
Utilisateur anonyme
 
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
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
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
le javadoc est ton amie, utilise la
0