2013-04-22 10 views
28

Ich bin nicht in der Lage zwei Zeichenfolge vergleichen mit dem folgenden Code:String Vergleich - Android

Ich habe eine Zeichenfolge mit dem Namen „Geschlecht“, das wird „männlich“ oder „weiblich“ als Wert.

if(gender == "Male") 
    salutation ="Mr."; 
if(gender == "Female") 
    salutation ="Ms."; 

Dies funktionierte nicht, so habe ich versucht, die folgenden:

String g1="Male"; 
String g2="Female"; 
if(gender.equals(g1)) 
    salutation ="Mr."; 
if(gender.equals(g2)) 
    salutation ="Ms."; 

Wieder hat es nicht funktioniert. Kann mir bitte jemand sagen, wie man String-Werte mit der if-Anweisung vergleicht.

+1

Haben Sie Lösung von Antworten bekommen? –

+3

möglich Duplikat von [Wie kann ich Zeichenfolgen in Java vergleichen?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Blackbelt

+5

Mögliche Duplikate von [Wie vergleiche ich Zeichenketten in Java?] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – SilentKiller

Antwort

72

Versuchen Sie, diese

if(gender.equals("Male")) 
salutation ="Mr."; 
if(gender.equals("Female")) 
salutation ="Ms."; 

Auch ; (Semikolon) entfernen in Ihre if-Anweisung

if(gender.equals(g1)); 

In Java, einer der häufigsten Fehler Neulinge treffen wird mit == Strings vergleichen . Sie müssen sich daran erinnern, == vergleicht die Objektreferenzen, nicht den Inhalt.

+3

Wenn Sie erklären, warum, werde ich +1 dies :) –

+0

Schauen Sie sich Ihre Code sorgfältig und entfernen Sie die; am Ende der beiden if-Anweisungen. –

+0

Sorry, ich habe nicht benutzt; nach dem wenn stmt in meinem tatsächlichen Code, Fehler beim Tippen der Frage hier! –

3

versuchen diese

String g1="Male"; 
    String g2="Female"; 
    if(gender.equals(g1)) 
     salutation ="Mr."; 
    if(gender.equals(g2)) 
     salutation ="Ms."; 

Sie wurden endet Ihre if-Anweisung if(gender.equals(g1)); < < --- hier durch den Zusatz ";"

8

In Java wir String nicht vergleichen, wie Sie oben tun werden ... Hier String Vergleich ...

if (gender.equalsIgnoreCase("Male")) { 
     salutation = "Mr."; 
    } else if (gender.equalsIgnoreCase("Female")) { 
     salutation = "Ms."; 
    } 
0
if(gender.equals(g1)); <--- 
if(gender == "Female"); <--- 

Sie nach if.REMOVE IT Semikolon haben.

2

sollte diese Arbeit:

if(gender.equals("Male")){ 
salutation ="Mr."; 
} 
else if(gender.equals("Female")){ 
salutation ="Ms."; 
} 

Denken Sie daran, nicht ; nach if Anweisung zu verwenden.

4

Ihre gender == "Male" vergleichen tatsächlich die Objektreferenzen für das Objekt gender und ein anderes Objekt Male. Was Sie verwenden müssen, ist die .equals() Methode, um den Wert der Objekte zu vergleichen.

3
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

versuchen Sie dies.

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

Ausgang:

Welcome Mr. 
6

ich denke, die oben genannte Antwort ist correct.Because == ist zu prüfen, ob zwei Strings das gleiche Objekt sind, während.equals() testet, ob zwei Strings denselben Wert haben.

+0

Dies ist eine bessere Erklärung, warum nicht == – Dexter

+1

gibt es keine "oben" Antwort, für die Reihenfolge variiert mit der Nummer der Stimmen. Bitte bearbeiten und spezifizieren Sie, wenn möglich. tks –

0

Eigentlich läuft hier jeder Code gut, aber Ihr Problem kommt wahrscheinlich von Ihrer gender Variable. Hast du vor dem Vergleich ein einfaches System.out.println(gender); gemacht?

12

Zeichenfolge ungleich int oder andere numerische Variablen werden in Java anders verglichen als andere Sprachen.

Um Strings in Java (Android) zu vergleichen, wird die Methode verwendet .compareTo();

so sollte der Code wie folgt sein:

if(gender.compareTo("Male")==0){ 
    salutation ="Mr."; 
} 
if(gender.compareTo("Female")==0){ 
    salutation ="Ms."; 
} 
-1

Probieren Sie es aus:

if (Objects.equals(gender, "Male")) { 
    salutation ="Mr."; 
} else if (Objects.equals(gender, "Female")) { 
    salutation ="Ms."; 
} 
0

Sie verwenden können, contentEquals() Funktion. Es kann Ihnen helfen ..