Je ne parviens pas à comparer deux chaînes à l'aide du code suivant:
J'ai une chaîne nommée "genre" qui aura pour valeur "Homme" ou "Femme".
if(gender == "Male")
salutation ="Mr.";
if(gender == "Female")
salutation ="Ms.";
Cela n'a pas fonctionné, j'ai donc essayé ce qui suit:
String g1="Male";
String g2="Female";
if(gender.equals(g1))
salutation ="Mr.";
if(gender.equals(g2))
salutation ="Ms.";
Encore une fois, cela n'a pas fonctionné .. Quelqu'un peut-il me dire comment comparer les valeurs de chaîne à l'aide de l'instruction if.
Essaye ça
if(gender.equals("Male"))
salutation ="Mr.";
if(gender.equals("Female"))
salutation ="Ms.";
Supprimez également ;
(point-virgule) dans votre instruction if
if(gender.equals(g1));
En Java, l’une des erreurs les plus courantes que rencontrent les nouveaux arrivants consiste à utiliser == pour comparer des chaînes. Vous devez vous rappeler, == compare les références d'objet, pas le contenu.
Les chaînes contrairement à int ou à d'autres variables numériques sont comparées en Java différemment des autres langages.
Pour comparer des chaînes en Java (Android), on utilise la méthode .compareTo ();
donc le code devrait être comme ça:
if(gender.compareTo("Male")==0){
salutation ="Mr.";
}
if(gender.compareTo("Female")==0){
salutation ="Ms.";
}
En Java, nous ne comparons pas les chaînes comme vous le faites ci-dessus ........ Voici la comparaison des chaînes ...
if (gender.equalsIgnoreCase("Male")) {
salutation = "Mr.";
} else if (gender.equalsIgnoreCase("Female")) {
salutation = "Ms.";
}
Je pense que la réponse mentionnée ci-dessus est correcte.Parce que == permet de vérifier si deux chaînes sont le même objet, alors que
L'opérateur == vérifie si deux objets sont exactement le même objet. Deux chaînes peuvent être des objets différents, mais avoir la même valeur (elles ont exactement les mêmes caractères). Utilisez la méthode .equals () pour comparer les chaînes pour l’égalité.
http://www.leepoint.net/notes-Java/data/strings/12stringcomparison.html
Votre gender == "Male"
compare en réalité les références d'objet pour l'objet gender
et un autre objet Male
. Ce que vous devez utiliser est la méthode .equals()
pour comparer la valeur des objets.
essaye ça
String g1="Male";
String g2="Female";
if(gender.equals(g1))
salutation ="Mr.";
if(gender.equals(g2))
salutation ="Ms.";
vous terminiez votre instruction if if(gender.equals(g1));
<< --- ici en ajoutant ";"
String g1="Male";
String g2="Female";
String salutation="";
String gender="Male";
if(gender.toLowerCase().trim().equals(g1.toLowerCase().trim()));
salutation ="Mr.";
if(gender.toLowerCase().trim().equals(g2.toLowerCase().trim()));
salutation ="Ms.";
essaye ça.
String g1 = "Male";
String g2 = "Female";
String gender = "Male";
String salutation = "";
if (gender.equalsIgnoreCase(g1))
salutation = "Mr.";
else if (gender.equalsIgnoreCase(g2))
salutation = "Ms.";
System.out.println("Welcome " + salutation);
Sortie:
Welcome Mr.
Cela devrait fonctionner:
if(gender.equals("Male")){
salutation ="Mr.";
}
else if(gender.equals("Female")){
salutation ="Ms.";
}
Rappelez-vous de ne pas utiliser ;
après l'instruction if
.
if(gender.equals(g1)); <---
if(gender == "Female"); <---
Vous avez un point-virgule après if.REMOVE IT.
De plus, si vous souhaitez comparer deux chaînes différentes, vous pouvez utiliser:
String mystring = "something";
!mystring.equals("whatever")
Cela reviendra vrai!
Celui-ci fonctionne pour moi:
if (email.equals("[email protected]") && pass.equals("123ss") ){
Toast.makeText(this,"Logged in",Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(this,"Logged out",Toast.LENGTH_LONG).show();
}
Vous pouvez utiliser la fonction contentEquals (). Cela peut vous aider ..
En fait, chaque code fonctionne bien ici, mais votre problème provient probablement de votre variable gender
. Avez-vous essayé de faire un System.out.println(gender);
simple avant la comparaison?