43

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

我有一个名为“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 语句比较字符串值。

4

17 回答 17

94

Try this

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

Also remove ;(semi-colon ) in your if statement

if(gender.equals(g1));

In Java, one of the most common mistakes newcomers meet is using == to compare Strings. You have to remember, == compares the object references, not the content.

于 2013-04-22T09:25:50.143 回答
12

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

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

所以代码应该是这样的:

if(gender.compareTo("Male")==0){
   salutation ="Mr.";
}
if(gender.compareTo("Female")==0){
   salutation ="Ms.";
}
于 2014-10-25T21:21:24.647 回答
10

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

    if (gender.equalsIgnoreCase("Male")) {
        salutation = "Mr.";
    } else if (gender.equalsIgnoreCase("Female")) {
        salutation = "Ms.";
    }
于 2013-04-22T09:27:11.927 回答
8

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

于 2013-04-22T09:32:36.823 回答
4

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

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

于 2013-04-22T09:28:51.617 回答
4

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

于 2013-04-22T09:30:12.563 回答
3

try this

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

you were ending your if statement if(gender.equals(g1)); <<--- here by adding ";"

于 2013-04-22T09:26:18.803 回答
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.";
于 2013-04-22T09:30:42.453 回答
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.
于 2013-04-22T09:31:31.103 回答
2

这应该有效:

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

记住,不要使用;afterif语句。

于 2013-04-22T09:28:14.967 回答
1

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

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

它将返回真实!

于 2018-12-24T17:57:39.543 回答
0
if(gender.equals(g1)); <---
if(gender == "Female"); <---

if.REMOVE IT 后面有分号。

于 2013-04-22T09:27:32.690 回答
0

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

于 2013-04-22T09:45:42.717 回答
0

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

于 2016-04-06T18:49:55.697 回答
0

这对我有用:

 if (email.equals("fahim@gmail.com") && pass.equals("123ss") ){
        Toast.makeText(this,"Logged in",Toast.LENGTH_LONG).show();
    }
    else{

        Toast.makeText(this,"Logged out",Toast.LENGTH_LONG).show();
    }
于 2018-05-11T20:42:12.827 回答
0

实际上,如果我们能看到性别的输入是什么,我们可以提供更好的帮助

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

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

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

System.out.println(gender);

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

于 2021-03-10T22:39:43.110 回答
-1

试试看:

if (Objects.equals(gender, "Male")) {
    salutation ="Mr.";
} else if (Objects.equals(gender, "Female")) {
    salutation ="Ms.";
}
于 2016-03-22T04:37:13.237 回答