如果在执行期间跳过语句

时间:2013-02-11 16:47:31

标签: java android eclipse

我遇到了这段代码的问题。第6行的if语句在执行期间被忽略。我已经逐步完成了代码,变量文件[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
                        }   
                    }

                }                   
            }

谢谢!

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

string.equals(anotherString)

而不是

string == anotherString

答案 3 :(得分:0)

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

而不是 files [position] ==“subjects.dat” 使用 文件[位置] .equals( “subjects.dat”)