【问题标题】:If statement being skipped during execution [duplicate]如果在执行期间跳过语句[重复]
【发布时间】:2013-02-11 16:47:31
【问题描述】:

我对这段代码有疑问。第 6 行的 if 语句在执行期间被忽略。此时我已经逐步完成了代码,变量 file[position] 的值是“subjects.dat”。但是,它会跳过此步骤并转到相关的 else 语句。任何想法为什么??

dialogButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if (markComplete.isChecked()) {
                    String toDelete;
                    String[] files = fileList();
                    if (files[position] == "subjects.dat") { //the error occurs at this line
                        toDelete = files[position + 1];
                        boolean deleted = deleteFile(toDelete);
                        if (deleted) {
                            dialog.dismiss();
                        } else {
                            // Do nothing
                        }
                    } else {                            
                        toDelete = files[position];                     
                        boolean deleted = deleteFile(toDelete);
                        if (deleted) {
                            dialog.dismiss();
                        } else {
                            //Do nothing
                        }   
                    }

                }                   
            }

谢谢!

【问题讨论】:

  • 因为字符串比较不是以这种方式完成的,所以它被评估为 false
  • @RyanThames isEquals()???你的意思是等于()??
  • 这可能是最常见的 java 错误之一,还有 if (var = 2) ;)
  • 对于对象,不要使用==,而是使用.equals方法
  • @PremGenError 是的,哈哈。哎呀

标签: java android eclipse


【解决方案1】:

您需要使用.equals() 来比较两个字符串的实际值 - 否则您将检查它们是否是同一个对象。

if (files[position].equals("subjects.dat")) { 
    // do stuff
}

【讨论】:

  • @RohitJain 哎呀,已修复。
【解决方案2】:

始终使用equals() method 检查字符串是否相等。 == 运算符检查两个引用变量是否指向同一个对象。

【讨论】:

    【解决方案3】:

    字符串是java中的对象,当您使用“==”时,您会比较引用(指针),它们通常是不同的(通常是因为对于短字符串进行了一些优化)。长话短说,使用

    string.equals(anotherString)
    

    而不是

    string == anotherString
    

    【讨论】:

      【解决方案4】:

      字符串 - 使用 .equals()。 == 永远不会给你真实的,因为对象是不同的。

      而不是 文件[位置] == "subjects.dat" 利用 文件[位置].equals("subjects.dat")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        相关资源
        最近更新 更多