【问题标题】:String comparison - Android [duplicate]字符串比较 - Android [重复]
【发布时间】:2013-04-15 03:29:34
【问题描述】:

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

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

【问题讨论】:

  • 你从答案中得到解决方案了吗?
  • 如果这不起作用,那是因为性别是另一回事。添加这个来弄清楚Log.d("GENDER", gender)

标签: java android string


【解决方案1】:

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

但是您可以尝试关注,也许这是一个案例问题,例如传入的 gendermale 而不是 Male em>

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

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

System.out.println(gender);

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

【讨论】:

    【解决方案2】:

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

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

    它会返回真!

    【讨论】:

      【解决方案3】:

      这个对我有用:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          试试看:

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

          【讨论】:

            【解决方案6】:

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

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

            所以代码应该是这样的:

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

            【讨论】:

              【解决方案7】:

              试试这个

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

              同时删除 if 语句中的 ;(semi-colon )

              if(gender.equals(g1));
              

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

              【讨论】:

              • 如果你解释原因,我会 +1 :)
              • 仔细查看您的代码并删除 ;在两个 if 语句的末尾。
              • 对不起,我没有使用;在我的实际代码中的 if stmt 之后,在这里输入问题时出错!
              • @RaghavKumar 输入是什么?
              • 为了安全起见,我总是把常量放在左边:if("Male".equals(gender))
              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                • 这是一个更好的解释为什么不使用 ==
                • 没有“高于”的答案,因为顺序随票数而变化。如果可能,请编辑并指定。 tks
                【解决方案10】:

                试试这个。

                        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.
                

                【讨论】:

                  【解决方案11】:
                  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.";
                  

                  【讨论】:

                    【解决方案12】:

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

                    【讨论】:

                      【解决方案13】:

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

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

                      【讨论】:

                        【解决方案14】:

                        这应该有效:

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

                        记住,不要在if 语句之后使用;

                        【讨论】:

                          【解决方案15】:
                          if(gender.equals(g1)); <---
                          if(gender == "Female"); <---
                          

                          if.REMOVE 它后面有分号。

                          【讨论】:

                            【解决方案16】:

                            在 Java 中,我们不会像您在上面所做的那样比较字符串... 这是字符串比较...

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

                            【讨论】:

                              【解决方案17】:

                              试试这个

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

                              你正在结束你的 if 语句 if(gender.equals(g1));

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 2012-09-26
                                • 2018-07-09
                                • 2017-06-27
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2011-09-28
                                相关资源
                                最近更新 更多