我试图使用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&amp;列中的数据时,应该触发规则。 ABC_26_b小于零。需要注意的是,列具有null / blank或特殊字符,如$,(,)。
我收到以下错误 -
Caused by: java.lang.NumberFormatException: For input string: "-5,099.00"
Caused by: java.lang.NumberFormatException: empty String
你能指导我处理它们的最佳方法吗?我处理的数据集非常小。谢谢。
答案 0 :(得分:1)
根据Java语言规范,字符串值"-5,099.00"
不表示浮点文字,因此Double.valueOf( "-5,099.00" )
会抛出异常。
您可以使用此处提供的解析方法修复数据或使用java.text.DecimalFormat将当前格式转换为double。根据您对各种可能输入格式的了解来设计格式。