我遇到了这段代码的问题。第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
}
}
}
}
谢谢!
答案 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”)