【问题标题】:Simple if statement stops code from working [duplicate]简单的 if 语句停止代码工作[重复]
【发布时间】:2013-08-21 08:48:16
【问题描述】:

我遇到了一个简单的 if 语句的问题,我不太清楚为什么。我有一个edittext框和一个按钮,当用户在edittext中输入一个值然后按下按钮时,输入到框中的任何内容都将转换为字符串并存储在一个变量中,然后这个变量显示在一个toast中.现在这工作得很好,但我希望它只显示某个值是否输入到编辑框中,但是当我输入一个 if 语句来验证这一点时,它似乎完全忽略了 if 语句并且什么都不做。它不会导致任何错误,但即使输入了正确的字符串,它也会停止显示任何 toast。我确定这很简单,但我似乎无法解决。如果有人能弄清楚它为什么这样做,那就太好了。
以下代码:

注释掉 if 语句时的工作代码:

         saveBtn1.setOnClickListener(new View.OnClickListener() {
           @Override
        public void onClick(View view) {
           Global.controlNum = inputTxt1.getText().toString();
         // if((Global.controlNum == "1")||(Global.controlNum == "2" )){
              Toast toast= Toast.makeText(SettingsScreen.this,"hello " + Global.controlNum, Toast.LENGTH_SHORT);
              toast.setGravity(Gravity.CENTER, 0, -100);
                  toast.show();
         // }

       }
    });


如果引入 if 语句,那么它什么也不做:

     saveBtn1.setOnClickListener(new View.OnClickListener() {
       @Override
             public void onClick(View view) {
               Global.controlNum = inputTxt1.getText().toString();
             if((Global.controlNum == "1")||(Global.controlNum == "2" )){
                 Toast toast= Toast.makeText(SettingsScreen.this,"hello " +       Global.controlNum,     Toast.LENGTH_SHORT);
                  toast.setGravity(Gravity.CENTER, 0, -100);
                  toast.show();
          }

       }
    });

【问题讨论】:

  • controlNum 是一个字符串,应始终使用equals() equalsIgnoreCase() 方法进行比较。
  • 改用Global.controlNum.equals("1")
  • 在比较两个字符串时使用 .equals() 或 .equalIgonreCase()。
  • 不!不!!又不是==..
  • @rocketboy 最好是"1".equals(Global.controlNum)

标签: java android string button if-statement


【解决方案1】:

了解How do I compare strings in Java?


所以简单地改变

if((Global.controlNum == "1")||(Global.controlNum == "2" ))

if(("1".equals(Global.controlNum))||("2".equals(Global.controlNum) ))

【讨论】:

    【解决方案2】:

    你应该改变它:

    if((Global.controlNum == "1")||(Global.controlNum == "2" ))
    

    if((Global.controlNum.equals("1"))||(Global.controlNum.equals("2") ))
    

    【讨论】:

    • @AndroidLearner 我真的很怀疑。除非创建它的 toString 方法可以返回 null(这似乎不太可能),否则没关系。
    【解决方案3】:

    你应该使用equlas()来比较String

     Global.controlNum.equlas("1")
    

    【讨论】:

      【解决方案4】:

      尝试替换

      if((Global.controlNum == "1")||(Global.controlNum == "2" ))
      

      if((Global.controlNum.equalsIgnoreCase("1"))||(Global.controlNum.equalsIgnoreCase("2") ))
      

      【讨论】:

        【解决方案5】:

        使用Global.controlNum.equals("1")

        如果您想在 Java (Android) 中比较字符串,请始终使用方法 equals(String)equalsIgnoreCase(String)

        【讨论】:

          猜你喜欢
          • 2015-09-07
          • 2011-08-25
          • 2014-08-22
          • 2015-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-26
          • 1970-01-01
          相关资源
          最近更新 更多