Java Drools:具有可能的空值的Cast对象加​​倍和&然后比较

时间:2016-09-13 18:15:28

标签: java drools

我试图使用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

你能指导我处理它们的最佳方法吗?我处理的数据集非常小。谢谢。

1 个答案:

答案 0 :(得分:1)

根据Java语言规范,字符串值"-5,099.00"不表示浮点文字,因此Double.valueOf( "-5,099.00" )会抛出异常。

您可以使用此处提供的解析方法修复数据或使用java.text.DecimalFormat将当前格式转换为double。根据您对各种可能输入格式的了解来设计格式。