web-dev-qa-db-fra.com

Java Ternary Operator pour définir True ou False

J'essaie de définir une condition et de définir true ou false comme suit, mais le résultat est toujours faux.

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

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

Quand j'essaie de sortir les valeurs, j'obtiens ce qui suit.

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

Il renvoie false tout le temps parce que vous comparez références , pas chaînes . Vous avez probablement voulu dire ceci à la place:

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

Ce qui se trouve être équivalent à ceci:

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

Et si categoriesCursor.getString(3) peut être null, vous serez plus en sécurité en procédant de la sorte:

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

Utilisez equals au lieu de == 

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

Essayez d'utiliser ceci

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

Utilisez categoriesCursor.getString(3).equals("1") au lieu de ==

1
tohava

Premièrement, pour comparer des chaînes, vous devrez utiliser la méthode equals:

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

Deuxièmement, vous n’avez pas besoin de l’opérateur ternaire ici. equals donne déjà un booléen, donc assignez-le simplement:

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

Changez-le en ceci:

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

N'utilisez pas == pour comparer le contenu de la chaîne.

REMARQUE: L'opérateur == ne peut pas être surchargé ni modifié en Java. Si vous utilisez object1 == object2, où object1 et object2 sont des chaînes ou tout autre objet, vérifiez si les références pointent sur le même objet sous-jacent. Cela ne comparera pas le contenu.

1
A B

D'abord, il n'y a pas besoin d'opérateur ternaire. Ensuite, vous devez utiliser equals() au lieu de ==. Parce que l'opérateur == vérifie si les références aux objets sont égales.

1
Valeh Hajiyev