Operateur de comparaison et string.

Résolu/Fermé
Azmatik - 24 nov. 2011 à 11:18
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 - 25 nov. 2011 à 04:38
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 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
24 nov. 2011 à 11:38
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
24 nov. 2011 à 13:14
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 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
24 nov. 2011 à 13:17
oups ... bien vu, une erreur qui n'était pas juste
0
Utilisateur anonyme
24 nov. 2011 à 19:56
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
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 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
25 nov. 2011 à 04:38
le javadoc est ton amie, utilise la
0