-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

Stringオブジェクトaと Stringbオブジェクトが異なる==ため (参照の等価性をテストします)。String インスタンスを比較する必要がありますequals

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

文字列を比較するには、演算子の代わりにa.equals(b)orを使用する必要があります。演算子は、2 つのオペランドの参照を比較します。あなたとは異なる String オブジェクトであるため、失敗します。a.equalsIgnoreCase(b)====ab

于 2013-06-18T10:41:30.227 に答える
1

次のいずれかで試してください

if (a.equals(b)) {}

if (a.equalsIgnoreCase(b)) {}

于 2013-06-18T10:42:19.640 に答える