Boolean.parseBoolean (“1”) = false…?

désolé d’avoir mal … j’ai: HashMap o

 o.get('uses_votes'); // "1" 

Encore…

 Boolean.parseBoolean(o.get('uses_votes')); // "false" 

Je suppose que ....parseBoolean n’accepte pas la norme 0 = false 1 = true ?

Est-ce que je fais quelque chose de mal ou devrais-je envelopper mon code dans:

 boolean uses_votes = false; if(o.get('uses_votes').equals("1")) { uses_votes = true; } 

Merci

Il accepte uniquement une valeur de chaîne de "true" pour représenter la valeur booléenne true . Le mieux que vous puissiez faire est

 boolean uses_votes = "1".equals(o.get("uses_votes")); 

Ou si la Map représente réellement un “droit”, je pense qu’un javabé est beaucoup mieux. Ou, s’il représente les parameters de configuration, vous pouvez examiner la configuration d’Apache Commons .

J’ai une petite fonction utilitaire pour convertir toutes les valeurs possibles en booléen.

 private boolean convertToBoolean(Ssortingng value) { boolean returnValue = false; if ("1".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value) || "true".equalsIgnoreCase(value) || "on".equalsIgnoreCase(value)) returnValue = true; return returnValue; } 

Selon la documentation (emphase la mienne):

Analyse l’argument de chaîne en tant que booléen. Le booléen renvoyé représente la valeur true si l’argument de chaîne n’est pas null et est égal, en ignorant la casse, à la chaîne “true” .

Si vous essayez d’obtenir le comportement de C ( 0 == false et tout le rest est true ), vous pouvez le faire:

 boolean uses_votes = Integer.parseInt(o.get("uses_votes")) != 0; 

Thomas, je pense que votre code d’encapsulation, ou simplement la condition elle-même, est la façon la plus propre de faire ce que vous voulez faire en Java, qui consiste à convertir “1” en valeur booléenne vraie. En fait, comparer à “0” et prendre l’inverse correspondrait au comportement de C consistant à traiter 0 comme faux et tout le rest comme étant vrai.

 Boolean intSsortingngToBoolean(numericBooleanValueSsortingng) { return !"0".equals(numericBooleanValueSsortingng); } 

Je sais que c’est un vieux sujet, mais qu’en est-il de l’emprunt de la syntaxe C:

 (o.get('uses_votes')).equals("1") ? true : false; 

Comme une note,
pour ceux qui ont besoin d’une valeur nulle pour des choses autres que “true” ou “false”, vous pouvez utiliser la fonction ci-dessous

 public Boolean tryParseBoolean(Ssortingng inputBoolean) { if(!inputBoolean.equals("true")&&!inputBoolean.equals("false")) return null; return Boolean.valueOf(inputBoolean); } 

Java est fortement typé. 0 et 1 sont des nombres, ce qui est un type différent d’un booléen. Un nombre ne sera jamais égal à un booléen.

Retourne true si vient ‘y’, ‘1’, ‘true’, ‘on’or ou ce que vous ajoutez de la même manière

 boolean getValue(Ssortingng value) { return ("Y".equals(value.toUpperCase()) || "1".equals(value.toUpperCase()) || "TRUE".equals(value.toUpperCase()) || "ON".equals(value.toUpperCase()) ); } 

Que dis-tu de ça?

 boolean uses_votes = ( "|1|yes|on|true" .indexOf("|"+o.get("uses_votes").toLowerCase()+"|") > -1 ); 

J’ai eu la même question et je l’ai résolu avec ça:

 Boolean use_vote = o.get('uses_votes').equals("1") ? true : false; 

Moyen très simple:

 resultBoolean = ( valTest == "true" ); 

si valTest a la chaîne “true”, le résultat booléen sera true, sinon false; Vous pouvez l’utiliser pour 0 ou 1 valeurs:

 resultBoolean = ( valTest == "1" );