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" );