问题描述
|
我不知道为什么以下条件即使总是为TRUE也会始终返回false。即时比较的结果是用户在字符串变量\'classNameGlobal \'中输入文本,而DB查询的第二个结果是从表的列中产生了字符串值。每当我运行控制开关时,否则将不运行if部分-.-
请看一看。
String result[];
result = new String[cursor.getCount() - 1];
int i = 0;
while (cursor.movetoNext()) {
result[i] = cursor.getString(cursor.getColumnIndex(\"name\"));
i++;
}
classNameGlobal = className.getText().toString().toupperCase().trim();
注意:如果上述代码是用onclick方法编写的,则只包含该结果数组声明。此外,我使用相同的方法将字符串存储在数据库中,即im将其转换为大写字母,然后修剪所有多余的空格!即使即时通讯转储查询和用户输入的字符串的结果。两者都是一样的。现在,为什么im始终保持此else部分运行,而不运行if部分-.- im用于比较数据库查询和用户输入的字符串的结果的方法是:
for (int b = 0; b < result.length; b++) {
if (classNameGlobal == result[b]) {
Log.d(TAG,\"Inside if condition Now : \" + result[b] + \" \\t\" + classNameGlobal);
db.execsql(\"drop table if exists \" + classNameGlobal);
/* Deleting Code File */
this.deleteFile(classNameGlobal + \".txt\");
Toast.makeText(
this,classNameGlobal + \" Database Dropped Successfully \",Toast.LENGTH_SHORT).show();
break;
} else {
Toast.makeText(
this,\"No Such Database Exists\",Toast.LENGTH_SHORT).show();
}
}
解决方法
在Java中,将String内容与equals方法进行比较。与==运算符相比,仅检查两个引用是否指向同一对象。
所以,改变
classNameGlobal == result[b]
至
classNameGlobal.equals(result[b])
, 使用if (classNameGlobal.equals(result[b])) {
代替==
。