Comparaison dans un If
Résolu
JrmC
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
J'ai un petit problème au niveau du code de mon appli java.
Une comparaison dans un if ne fonctionne pas alors qu'elle est toute bête, et je ne sais pas pourquoi.
Le String statut me renvoi bien 'serveur' lorsque je le print pourtant.
J'ai vérifié et il n'y a pas d'espace devant ou derrière.
Est ce que ça peut venir d'autre chose ? Comme un problème d'encodage dans ma bdd ? Sachant que je recupère statut dans une base de donné en localhost sous mySQL.
Mon code:
String login = Textlog.getText();
char[] mot = Textmdp.getPassword();
String statut = log(login, mot);
System.out.println(statut);
if(statut != "error"){
System.out.println("OUI dif error");
if(statut == "serveur"){
System.out.println("OUI ifserveur");
Service serv = new Service();
serv.dessine();
}
else{
if(statut == "cuisinier"){
Cuisine cuis = new Cuisine();
cuis.dessine();
}
}
}
else{
System.out.println("Mauvais login ou mot de passe");
}
Mon affichage console:
serveur
OUI dif error
Merci pour vos futures réponses.
J'ai un petit problème au niveau du code de mon appli java.
Une comparaison dans un if ne fonctionne pas alors qu'elle est toute bête, et je ne sais pas pourquoi.
Le String statut me renvoi bien 'serveur' lorsque je le print pourtant.
J'ai vérifié et il n'y a pas d'espace devant ou derrière.
Est ce que ça peut venir d'autre chose ? Comme un problème d'encodage dans ma bdd ? Sachant que je recupère statut dans une base de donné en localhost sous mySQL.
Mon code:
String login = Textlog.getText();
char[] mot = Textmdp.getPassword();
String statut = log(login, mot);
System.out.println(statut);
if(statut != "error"){
System.out.println("OUI dif error");
if(statut == "serveur"){
System.out.println("OUI ifserveur");
Service serv = new Service();
serv.dessine();
}
else{
if(statut == "cuisinier"){
Cuisine cuis = new Cuisine();
cuis.dessine();
}
}
}
else{
System.out.println("Mauvais login ou mot de passe");
}
Mon affichage console:
serveur
OUI dif error
Merci pour vos futures réponses.
A voir également:
- Comparaison dans un If
- Comparaison million milliard - Accueil - Technologies
- Logiciel comparaison photo gratuit - Télécharger - Photo & Graphisme
- Comparaison samsung a15 et a16 - Accueil - Téléphones
- Comparaison prix amazon - Accueil - Commerce
- Prix Amazon : comment suivre les évolutions de tarifs - Guide
1 réponse
Bonjour,
L'opérateur
Ici, tu as un objet issu de la méthode log (statut) et un objet codé en dur dans le code ("serveur"), même s'ils ont la même valeur, ce sont deux objets distincts.
Pour comparer leur valeur, il faut utiliser la méthode equals de la classe Object.
L'opérateur
==va déterminer si l'objet est le même à gauche et à droite. En aucun cas il ne permet de déterminer si leur valeur est la même.
Ici, tu as un objet issu de la méthode log (statut) et un objet codé en dur dans le code ("serveur"), même s'ils ont la même valeur, ce sont deux objets distincts.
Pour comparer leur valeur, il faut utiliser la méthode equals de la classe Object.
if (statut.equals("serveur"))
Donc l'opérateur == va comparer si deux variables sont des String par exemple ?
Merci beaucoup KX
Non, il va regarder si ce sont les deux mêmes objets, peu importe que ce soit des String ou autre chose, ce qu'il va regarder ce sont les références en mémoire de ces objets.
Exemples :