web-dev-qa-db-fra.com

Comparaison de chaînes - Android

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.

36
Raghav Kumar

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.

81

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.";
}
12
ManuelAlvaradoh

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.";
    }
8
SilentKiller

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 

6
anjaly

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

4
bema

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.

4
midhunhk

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 ";"

3
Shiv
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.";
3
Arun C

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.
3
Imran Ali

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.

2
Jainendra
if(gender.equals(g1)); <---
if(gender == "Female"); <---

Vous avez un point-virgule après if.REMOVE IT.

0
Vipul Shah

De plus, si vous souhaitez comparer deux chaînes différentes, vous pouvez utiliser:

String mystring = "something";
!mystring.equals("whatever")

Cela reviendra vrai!

0
davidprogramador01

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();
    }
0
Fahim Md. Riaz

Vous pouvez utiliser la fonction contentEquals (). Cela peut vous aider ..

0
Ashwin Mothilal

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?

0
e1che