Java Drools:将具有可能空值的对象转换为双倍然后进行比较
Java Drools : Cast object with possible null values to double & then compare
我正在尝试使用 Java Drools 触发条件,这是代码片段-
rule "ABC Pass"
when
form: Form_ABC()
$m: Map()
$ABC: Object() from $m["ABC_ID"]
$a: Object() from $m["ABC_26_a"]
$b: Object() from $m["ABC_26_b"]
Map (Double.valueOf($a.toString()) < 0 && Double.valueOf($b.toString()) < 0)
then
System.out.println("ABC Rule Pass \t\t"
+ $ABC.toString()
+ "\tField 1 is: " + $a.toString()
+ "\tField 2 is: " + $b.toString());
end
因此,当 ABC_26_a 和 ABC_26_b 列中的数据小于零时,应触发该规则。请注意,这些列具有 null/blank 或 $、(、) 等特殊字符。
我收到以下错误 -
Caused by: java.lang.NumberFormatException: For input string: "-5,099.00"
Caused by: java.lang.NumberFormatException: empty String
你能指导我最好的处理方法吗?我正在处理的数据集非常小。谢谢。
根据 Java 语言规范,字符串值 "-5,099.00"
不表示浮点文字,因此 Double.valueOf( "-5,099.00" )
抛出异常。
您可以修复您的数据或使用 java.text.DecimalFormat 将您当前的格式转换为双精度格式,使用那里可用的解析方法。根据您对所有可能输入格式的了解来设计格式。
我正在尝试使用 Java Drools 触发条件,这是代码片段-
rule "ABC Pass"
when
form: Form_ABC()
$m: Map()
$ABC: Object() from $m["ABC_ID"]
$a: Object() from $m["ABC_26_a"]
$b: Object() from $m["ABC_26_b"]
Map (Double.valueOf($a.toString()) < 0 && Double.valueOf($b.toString()) < 0)
then
System.out.println("ABC Rule Pass \t\t"
+ $ABC.toString()
+ "\tField 1 is: " + $a.toString()
+ "\tField 2 is: " + $b.toString());
end
因此,当 ABC_26_a 和 ABC_26_b 列中的数据小于零时,应触发该规则。请注意,这些列具有 null/blank 或 $、(、) 等特殊字符。
我收到以下错误 -
Caused by: java.lang.NumberFormatException: For input string: "-5,099.00"
Caused by: java.lang.NumberFormatException: empty String
你能指导我最好的处理方法吗?我正在处理的数据集非常小。谢谢。
根据 Java 语言规范,字符串值 "-5,099.00"
不表示浮点文字,因此 Double.valueOf( "-5,099.00" )
抛出异常。
您可以修复您的数据或使用 java.text.DecimalFormat 将您当前的格式转换为双精度格式,使用那里可用的解析方法。根据您对所有可能输入格式的了解来设计格式。