2013-04-22 88 views
28

我无法用下面的代码来比较两个字符串:字符串比较 - 安卓

我有一个名为“性别”,这将有“男”或“女”作为其值的字符串。

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

这并没有工作,所以我尝试了以下内容:

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

再次,它没有工作。 有人可以告诉我如何使用if语句比较字符串值。

+1

你有答案吗? – 2013-04-22 09:30:08

+3

可能的重复[如何比较Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Blackbelt 2013-04-22 09:38:19

+5

可能的重复[如何比较在Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – SilentKiller 2017-05-08 12:21:26

回答

72

试试这个

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

中还删除;(分号)的if语句

if(gender.equals(g1)); 

在Java中,最常见的错误满足新人使用==比较字符串一个。你必须记住,==比较对象引用,而不是内容。

+3

如果你解释为什么,我会+1这个:) – 2013-04-22 09:27:03

+0

看看你的仔细编码并删除;在两个if语句结束时。 – 2013-04-22 09:33:20

+0

对不起,我没有用;在我的实际代码中的if stmt之后,在这里输入问题时出现错误! – 2013-04-22 09:34:20

3

试试这个

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

你结束你的if语句if(gender.equals(g1)); < < ---这里加 “;”

8

在Java中,你在上面干什么,我们不比较字符串... 这里是字符串比较...

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

你if.REMOVE之后分号。

2

这应该工作:

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

记住,不要到后if语句中使用;

4

gender == "Male"实际上是比较的对象gender和不同的对象Male对象的引用。你必须使用.equals()方法来比较对象的值。

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

试试这个。

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

输出:

Welcome Mr. 
6

我认为上述答案是correct.Because ==是用于测试两个字符串是否是同一个对象,而。equals()测试两个字符串是否具有相同的值。

+0

这是更好的解释为什么不使用== – Dexter 2014-11-26 11:04:34

+1

没有“above”的答案,因为顺序因数而异的选票。请尽可能编辑并指定。 TKS – 2016-08-21 10:37:56

0

实际上,每个代码在这里运行良好,但是您的问题可能来自您的gender变量。在比较之前你有没有尝试做一个简单的System.out.println(gender);

12

与int或其他数值变量不同的字符串在Java中与其他语言不同。

要比较Java中的字符串(android),它使用方法.compareTo();

所以代码应该是这样的:

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

试试:

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

可以使用,contentEquals()函数。它可能会帮助你..