2016-09-13 3 views
0

は、私がここにJavaのDroolsの&を使用して条件をトリガしようとしています比較するためのコードsnippet-のJavaのDrools:可能なNULL値を持つキャストオブジェクトが倍増&その後

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はゼロ未満です。列には空白または$、(、)のような特殊文字があることに注意してください。

私は次のエラーを取得しています -

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

あなたは私にそれらを処理するための最良の方法を案内していただけますか?私が扱うデータセットはかなり小さいです。ありがとう。

答えて

1

文字列値"-5,099.00"は、Java言語仕様に従った浮動小数点リテラルを表していないため、Double.valueOf("-5,099.00")は例外をスローします。

ここで使用できるparseメソッドを使用して、データを修正したり、現在のフォーマットをdoubleに変換するjava.text.DecimalFormatを使用することができます。可能な入力形式の全範囲の知識に基づいて形式を設計します。

関連する問題