web-dev-qa-db-ja.com

Java TrueまたはFalseを設定する3項演算子

次のように条件を設定してtrueまたはfalseを設定しようとしていますが、常にfalseを返します。

boolean checked = (categoriesCursor.getString(3) == "1") ? true
                    : false;

Log.i("Nomad",categoriesCursor.getString(3)+ " "+checked);

値を出力しようとすると、次のようになります。

01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
13
Harsha M V

stringsではなくreferencesを比較しているため、常にfalseが返されます。あなたはおそらくこれを代わりに意味しました:

_boolean checked = (categoriesCursor.getString(3).equals("1")) ? true
                : false;
_

これはたまたまこれと同等です:

_boolean checked = categoriesCursor.getString(3).equals("1");
_

そして、categoriesCursor.getString(3)nullの場合、代わりにこれを行う方が安全です。

_boolean checked = "1".equals(categoriesCursor.getString(3));
_
39
K-ballo

==の代わりにequalsを使用してください

boolean checked = (categoriesCursor.getString(3).equals("1"));
3
Ilya

これを使ってみてください

(categoriesCursor.getString(3).equals("1")) ? true : false;
3
Animesh Sinha

_==_の代わりにcategoriesCursor.getString(3).equals("1")を使用します

1
tohava

まず、文字列を比較するには、equalsメソッドを使用する必要があります。

categoriesCursor.getString(3).equals("1")

次に、ここでは三項演算子は必要ありません。 equalsの結果はすでにブール値になっているので、それを割り当てるだけです。

boolean checked = categoriesCursor.getString(3).equals("1");
1
Femaref

これを次のように変更します。

boolean checked = (categoriesCursor.getString(3).equals("1")) ? true : false;

文字列の内容を比較するために==を使用しないでください。

注意==演算子は、Javaでオーバーロードまたは変更できません。 object1 == object2を使用している場合、object1およびobject2は文字列またはその他のオブジェクトであり、参照が同じ基本オブジェクトを指しているかどうかを確認します。これは内容を比較しません。

1
A B

まず、三項演算子は必要ありません。次に、_==_の代わりにequals()を使用する必要があります。 _==_演算子は、オブジェクトへの参照が等しいかどうかを確認するためです。

1
Valeh Hajiyev