我需要检索一个String列的总和,所以我写了这个:
<variable name="totalQt" class="java.lang.Integer" calculation="Sum">
<variableExpression>
<![CDATA[Integer.parseInt($F{QTARTBP}.replaceAll(" ", ""))]]>
</variableExpression>
</variable>
但是我收到了这个错误:
....
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at
articleBonPreparation_1385730226859_237481.evaluateEstimated(articleBonPreparation_1385730226859_237481:428)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluateEstimated(JREvaluator.java:254)
所以有空字符串,所以如何在这种情况下使用零,我写了thiw但是这是错的 :
<variableExpression>
<![CDATA[$F{QTARTBP}.equals("") ? 0 : Integer.parseInt($F{QTARTBP}.replaceAll(" ", ""))]]>
</variableExpression>
任何想法都将受到赞赏
答案 0 :(得分:0)
查看您正在使用的输入数据会很有用,但尽管如此,如果$F{QTARTBP}
的值是单个空格(" "
),您的代码很明显会失败。您可以尝试使用以下表达式,它将在空字符串检查中包含单个空格,并将返回0
:
$F{QTARTBP}.replaceAll(" ", "").equals("") ? 0 : Integer.parseInt($F{QTARTBP}.replaceAll(" ", ""))
您应该知道,如果您的任何输入字符串无法解释为整数,那么这仍然会失败。
答案 1 :(得分:-2)
Jasper不计算 - 你应该在你的java代码中生成String。并计算你在java中需要的东西。
UPD。这个答案是不正确的。我更深入地学习了JR并理解它。