使用Jasper Studio时,如果为null,则使值为0

时间:2016-09-22 17:47:22

标签: jasper-reports

我知道如何为某些简单值创建一个空值0。例如,我为我的文本字段设置了以下表达式:

($V{current_val_subtotal} != null) ? $V{current_val_subtotal} : "0.00"

其中$V{current_val_subtotal}BigDecimal。但我试图做以下事情:

(($F{CurrentValue}.doubleValue()/$V{current_val_subtotal}.doubleValue())*100 != null) ? ($F{CurrentValue}.doubleValue()/$V{current_val_subtotal}.doubleValue())*100 : “0.00”

其中$F{CurrentValue}BigDecimal

预览报告时,我收到以下错误:

The operator != is undefined for the argument type(s) double, null
Errors were encountered when compiling report expression class file:

1 个答案:

答案 0 :(得分:1)

你到底在想什么?表达式someDouble / someDouble != null的含义是什么?

你有两个原语的除法,它们永远不会产生null:如果BigDecimal都是非null,你可以得到一个double,否则得到NullPointerException。这就是你得到编译错误的原因。

你可能想要这样的东西

($F{CurrentValue} != null && $V{current_val_subtotal} != null) ? 
($F{CurrentValue}.doubleValue() / $V{current_val_subtotal}.doubleValue() * 100) : 0

($F{CurrentValue} != null && $V{current_val_subtotal} != null) ?
($F{CurrentValue}.divide($V{current_val_subtotal}, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)) : BigDecimal.ZERO