2011-05-30 83 views
0

我不知道为什么下面的代码即使在它为TRUE的时候也总是重做错误。我要比较的是用户在字符串变量'classNameGlobal'中输入的文本的结果,以及来自DB查询的第二个结果,该结果是来自表列的字符串值。每当我运行控制开关到其他条件不运行,如果部分 - 。 -Android如果其他条件错误

请看看。

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使用相同的方法将字符串存储在数据库中,即将其转换为大写字母,然后对任何额外的空白区域进行triminng处理!即使当从用户输入的字符串的查询和达到转储结果。两者都是相同的。现在为什么你我总是保持得到这个else部分运行,但不是如部分-.-使用比较来自数据库查询和用户输入的字符串结果的方法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(); 

       } 

      } 

回答

5

在Java中,用比较字符串内容等号方法。与==运算符相比较,只是检查两个引用是否指向同一个对象。

所以,改变

classNameGlobal == result[b] 

classNameGlobal.equals(result[b]) 
1

使用if (classNameGlobal.equals(result[b])) {,而不是==