webentwicklung-frage-antwort-db.com.de

Java Ternary Operator zum Setzen von "True" oder "False"

Ich versuche, eine Bedingung festzulegen und wie folgt auf wahr oder falsch zu setzen, es wird jedoch immer Falsch zurückgegeben.

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

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

Wenn ich versuche, die Werte auszugeben, bekomme ich folgendes.

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

Es gibt die ganze Zeit false zurück, weil Sie reference und nicht strings vergleichen. Sie meinten wahrscheinlich stattdessen:

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

Was ist gleichbedeutend damit:

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

Und falls categoriesCursor.getString(3)null sein kann, sind Sie stattdessen sicherer:

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

Verwenden Sie equals anstelle von == 

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

Versuchen Sie es mit diesem

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

Verwenden Sie categoriesCursor.getString(3).equals("1") anstelle von ==

1
tohava

Um Strings zu vergleichen, müssen Sie zunächst die Methode equals verwenden:

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

Zweitens brauchen Sie hier nicht den ternären Operator. equals führt bereits zu einem booleschen Wert, also weisen Sie es einfach zu:

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

Ändern Sie es zu diesem:

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

Verwenden Sie == nicht zum Vergleichen des String-Inhalts.

HINWEIS: Der ==-Operator kann in Java nicht überladen oder geändert werden. Wenn Sie object1 == object2 verwenden, wobei object1 und object2 Strings oder ein anderes Objekt sind, prüfen Sie, ob die Referenzen auf dasselbe zugrunde liegende Objekt verweisen. Dies wird den Inhalt nicht vergleichen.

1
A B

Zunächst ist kein ternärer Operator erforderlich. Dann müssen Sie equals() anstelle von == verwenden. Der Operator == prüft, ob die Referenzen auf die Objekte gleich sind.

1
Valeh Hajiyev