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

抱歉是一个痛苦…我有: HashMap<String, String> o

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

然而…

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

我猜测....parseBoolean不接受标准0 = false 1 = true

我做错了什么,或者我将不得不包装我的代码:

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

谢谢

它只接受一个string值"true"来表示布尔值true 。 最好你能做的是

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

或者如果Map实际上代表一个“实体”,我认为Javabean会好很多。 或者如果它代表configuration设置,你可能想看看Apache Commonsconfiguration 。

我有一个小的实用程序function,将所有可能的值转换为布尔值。

 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; } 

根据文件 (重点是我的):

将string参数parsing为布尔值。 返回的布尔值表示如果string参数不为空,并且与忽略大小写的string“true”相等,则返回true

如果你想获得C的行为( 0 == false ,其他的都是true ),你可以这样做:

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

作为一个说明,
对于那些需要对“true”或“false”string以外的值有空值的人,可以使用下面的函数

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

托马斯,我认为你的包装代码,或者只是条件本身,是最简单的方法来做你想做的事情在java中,这是转换为布尔真值“1”。 实际上,与“0”相比,反过来将把C的行为视为虚假,其他一切都是真实的。

 Boolean intStringToBoolean(numericBooleanValueString) { return !"0".equals(numericBooleanValueString); } 

Java是强types的。 0和1是数字,这是一个不同于布尔型的types。 一个数字永远不会等于一个布尔值。

我知道这是一个古老的线程,但是从C语言中借用什么呢?

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

如果出现“y”,“1”,“true”,“on”或以类似的方式添加任何内容,则返回true

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

这个怎么样?

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

非常简单的方法:

 resultBoolean = ( valTest == "true" ); 

如果valTest的string为“true”,则布尔结果为true,否则为false; 您可以将其用于0或1的值:

 resultBoolean = ( valTest == "1" );