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 tt" 
                        + $ABC.toString() 
                        + "tField 1 is: " + $a.toString()
                        + "tField 2 is: " + $b.toString());
end

所以,当ABC_26_a &ABC_26_b小于零。需要注意的是,这些列有空/空字符或特殊字符,如$,(,)。

我得到以下错误-

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转换当前格式为双精度,使用那里可用的parse方法。根据您对所有可能的输入格式的了解来设计格式。

最新更新