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