字符串比较 - Android

时间:2013-04-22 09:23:54

标签: java android string

我无法使用以下代码比较两个字符串:

我有一个名为“gender”的字符串,其值为“Male”或“Female”。

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语句比较字符串值。

17 个答案:

答案 0 :(得分:81)

试试这个

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

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

if(gender.equals(g1));

在Java中,新手遇到的最常见错误之一是使用==来比较字符串。你必须记住,==比较对象引用,而不是内容。

答案 1 :(得分:12)

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

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

所以代码应该是这样的:

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

答案 2 :(得分:8)

在Java中,我们不像上面那样比较字符串...... 这是String比较...

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

答案 3 :(得分:6)

我认为上面提到的答案是正确的。因为==用于测试两个字符串是否是同一个对象,而.equals()测试两个字符串是否具有相同的值。

答案 4 :(得分:4)

==运算符检查两个对象是否完全相同。两个字符串可以是不同的对象,但具有相同的值(在它们中具有完全相同的字符)。使用.equals()方法比较字符串是否相等。

http://www.leepoint.net/notes-java/data/strings/12stringcomparison.html

答案 5 :(得分:4)

您的gender == "Male"实际上是在比较对象gender和另一个对象Male的对象引用。您必须使用的是.equals()方法来比较对象的值。

答案 6 :(得分:3)

试试这个

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

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

答案 7 :(得分: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.

答案 8 :(得分: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.";

答案 9 :(得分:2)

这应该有效:

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

请注意,不要在;声明之后使用if

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

if.REMOVE IT之后你有分号。

答案 12 :(得分:0)

您可以使用contentEquals()函数。它可能对你有帮助..

答案 13 :(得分:0)

这个对我有用:

https://www.yahoo.com/**75063**/list.json

答案 14 :(得分:0)

此外,如果要比较两个字符串是否不同,则可以使用:

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

它将返回true!

答案 15 :(得分:0)

实际上,如果我们能看到输入的内容是什么gender

,我们可以提供更好的帮助

但是你可以尝试关注,也许这是一个案例问题,比如传入的性别男性而不是男性 em>

if(gender.equalsIgnoreCase("male"){
    salutation = "Mr.";
} else if(gender.equalsIgnoreCase("female"){
    salutation = "Ms.";
}

或者如果这不起作用,请尝试获取性别并告诉我们它是什么,以便我们提供更好的帮助。 您可以像这样打印性别

System.out.println(gender);

您可能会在 IDE 的控制台上看到输出

答案 16 :(得分:-1)

试一试:

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