-4

为什么这是假的?我无法得到它。DataBaseHelper.getBoolean(); 是一个字符串值。在这个 if 语句中,它输出相同的结果,但它说它彼此不相等。

            String a = DataBaseHelper.getBoolean(id);
            String b = DataBaseHelper.getBoolean(id);
            if (a==b){
                newTextView.setText(DataBaseHelper.getBoolean(id) + " == " + DataBaseHelper.getBoolean(id) + " is TRUE \n");
            } else {
                newTextView.setText(DataBaseHelper.getBoolean(id) + " == " + DataBaseHelper.getBoolean(id) + " is FALSE \n");
            }

来自 toher 类的 getBoolean 方法。

public String getBoolean(int randomIndex) {
        // TODO Auto-generated method stub
        open();
        Cursor c = myDataBase.query(TABLE_NAME1, columns, WHATTODONOW_COLUMN_ID
                + "=" + randomIndex, null, null, null, null);
        if (c != null) {
            c.moveToFirst();
            String text = c.getString(8);
            return text;
        }
        closee();
        return null;
    }
4

3 回答 3

2

因为 Stringa和 Stringb对象是不同的(==测试引用相等)。你应该通过比较 String 实例equals

if (a.equals(b)) {}
于 2013-06-18T10:40:29.203 回答
1

您应该使用a.equals(b)ora.equalsIgnoreCase(b)代替==运算符来比较字符串。==运算符比较两个操作数的引用。您的aandb是不同的 String 对象,因此它失败了。

于 2013-06-18T10:41:30.227 回答
1

尝试以下之一

如果(a.equals(b)){}

if (a.equalsIgnoreCase(b)) {}

于 2013-06-18T10:42:19.640 回答