Es tut mir leid, ein Schmerz zu sein ... Ich habe: HashMap<String, String> o
o.get('uses_votes'); // "1"
Noch...
Boolean.parseBoolean(o.get('uses_votes')); // "false"
Ich vermute, ....parseBoolean
das akzeptiert den Standard nicht 0 = false
1 = true
?
Mache ich etwas falsch oder muss ich meinen Code einpacken:
boolean uses_votes = false;
if(o.get('uses_votes').equals("1")) {
uses_votes = true;
}
Vielen Dank
parseBoolean
würde durch eine Ausnahme, wenn es etwas anderes alstrue
oder bekommen würdefalse
.Boolean.parseBoolean(java.lang.String)
wirft nicht,Exception
wenn es etwas anderes alstrue
oder bekommtfalse
. Es wird nurfalse
jedes Mal zurückgegeben, wenn etwas anderes als "true" oder "TRUE" als Zeichenfolge angezeigt wird. grepcodefalse
.Ich habe eine kleine Utility-Funktion, um alle möglichen Werte in Boolean zu konvertieren.
private boolean convertToBoolean(String value) { boolean returnValue = false; if ("1".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value) || "true".equalsIgnoreCase(value) || "on".equalsIgnoreCase(value)) returnValue = true; return returnValue; }
quelle
Laut Dokumentation (Schwerpunkt Mine):
quelle
Wenn Sie versuchen, das Verhalten von C zu ermitteln (
0 == false
und alles andere isttrue
), können Sie Folgendes tun:boolean uses_votes = Integer.parseInt(o.get("uses_votes")) != 0;
quelle
Ich weiß, dass dies ein alter Thread ist, aber was ist mit dem Ausleihen aus der C-Syntax:
(o.get('uses_votes')).equals("1") ? true : false;
quelle
? true : false
Bit am Ende ist ein bekanntes Antimuster: Es sind nur 14 zusätzliche Zeichen, die ohne besonderen Grund eingegeben wurden, da die linke Seite bereits ein Boolescher Wert ist, und testen Sie sie, um zu entscheiden, ob Sie zurückkehrentrue
oderfalse
dumm sind.Thomas, ich denke, Ihr Wrapper-Code oder nur die Bedingung selbst ist der sauberste Weg, um das zu tun, was Sie in Java tun möchten. Dabei wird "1" in den Boolean True-Wert konvertiert. Tatsächlich würde ein Vergleich mit "0" und eine Umkehrung dem C-Verhalten entsprechen, 0 als falsch und alles andere als wahr zu behandeln.
Boolean intStringToBoolean(numericBooleanValueString) { return !"0".equals(numericBooleanValueString); }
quelle
Als Hinweis können Sie
für diejenigen, die für andere Dinge als "wahre" oder "falsche" Zeichenfolgen einen Nullwert benötigen, die folgende Funktion verwenden
public Boolean tryParseBoolean(String inputBoolean) { if(!inputBoolean.equals("true")&&!inputBoolean.equals("false")) return null; return Boolean.valueOf(inputBoolean); }
quelle
Gibt true zurück, wenn 'y', '1', 'true', 'on'oder was auch immer Sie auf ähnliche Weise hinzufügen
boolean getValue(String value) { return ("Y".equals(value.toUpperCase()) || "1".equals(value.toUpperCase()) || "TRUE".equals(value.toUpperCase()) || "ON".equals(value.toUpperCase()) ); }
quelle
Java ist stark typisiert. 0 und 1 sind Zahlen, ein anderer Typ als ein Boolescher Wert. Eine Zahl wird niemals gleich einem Booleschen Wert sein.
quelle
Ich hatte die gleiche Frage und habe sie damit gelöst:
Boolean use_vote = o.get('uses_votes').equals("1") ? true : false;
quelle
Wie wäre es damit?
boolean uses_votes = ( "|1|yes|on|true|" .indexOf("|"+o.get("uses_votes").toLowerCase()+"|") > -1 );
quelle