Android如果其他条件错误

时间:2011-05-30 21:20:26

标签: java android sqlite

我不知道为什么以下的代码总是在虚假的情况下反驳。我比较的结果是用户在字符串变量'classNameGlobal'中输入的文本和来自DB查询的第二个结果,从而导致表的列中的字符串值。每当我运行控制开关到else条件不运行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方法编写的,除了结果数组声明之外的所有代码。另外,我使用相同的方法将字符串存储在数据库中,即将其转换为大写字母,然后删除任何额外的空白区域!即使我从用户输入的字符串查询和解压缩结果。两者都是相同的。现在为什么我总是让这个部分继续运行而不是if部分-.-我用来比较数据库查询和用户输入字符串的结果的方法是:

 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();

                }

            }

2 个答案:

答案 0 :(得分:5)

在Java中,将String内容与equals方法进行比较。与==运算符比较只检查两个引用是否指向同一个对象。

所以,改变

classNameGlobal == result[b]

classNameGlobal.equals(result[b])

答案 1 :(得分:1)

使用if (classNameGlobal.equals(result[b])) {代替==