2016-09-13 20 views
0

我試圖觸發使用Java的Drools &這裏的條件是代碼snippet-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,空白或特殊字符,如$,(,)。

我收到以下錯誤 -

Caused by: java.lang.NumberFormatException: For input string: "-5,099.00" 
Caused by: java.lang.NumberFormatException: empty String 

能否請您指導我來處理它們的最好方法?我正在處理的數據集非常小。謝謝。

回答

1

根據Java語言規範,字符串值"-5,099.00"不表示浮點字面值,因此Double.valueOf("-5,099.00")會引發異常。

您可以修復您的數據或使用java.text.DecimalFormat將當前格式轉換爲double,並使用可用的解析方法。根據您對全部可能輸入格式的瞭解來設計格式。