Java 如何忽略字段的某些值来获取平均值
我知道如何获得数字之间的平均值,但当我尝试使用相同的方法(通过设置变量的属性)从数字和字符串的混合值中获得平均值时,它总是返回一个异常(我知道原因) 如何获得包含数字和字符串混合值的列_1的平均值Java 如何忽略字段的某些值来获取平均值,java,jasper-reports,Java,Jasper Reports,我知道如何获得数字之间的平均值,但当我尝试使用相同的方法(通过设置变量的属性)从数字和字符串的混合值中获得平均值时,它总是返回一个异常(我知道原因) 如何获得包含数字和字符串混合值的列_1的平均值 column_1 3 4 N/A 3 N/A 也就是说,在第1列中,平均值必须为3.33。应采用(3+4+3)/3公式,两个N/A值必须忽略/排除在计算之外。如何做到这一点?此任务可以分解为几个简单的子任务: 从混合类型获取数值。我们应该检查字段中的数值 计算所有数值的平均值(跳
column_1
3
4
N/A
3
N/A
也就是说,在第1列中,平均值必须为
3.33。
应采用(3+4+3)/3
公式,两个N/A
值必须忽略/排除在计算之外。如何做到这一点?此任务可以分解为几个简单的子任务:
numValue
3
4
N/A
3
N/A
下面示例中此数据源的数据适配器名称为str_num.csv。跳过文件的第一行-它包含列的名称
报告的模板
我使用Jaspersoft Studio(JSS)设计了一个报告模板。详细标注栏用于显示数据,摘要标注栏用于显示平均值
带有值(数字和非数字)的字段将为java.lang.String类型
第一个变量仅用于存储数值。如果值
表达方式为:
StringUtils.isNumeric($F{numValue})?Integer.valueOf($F{numValue}):null
Java库在这个表达式中使用,这就是为什么我们需要将报表的语言设置为Java,并为StringUtils类添加导入
第二个变量将为平均计算类型:
完整模板:
输出结果
JSS中生成的resut如下所示:
如果我们将第一个变量(用于存储数值)的表达式更改为:
StringUtils.isNumeric($F{numValue})?整型.valueOf($F{numValue}):0
结果将是:
-它是5条记录的平均值,而不是上面第一种情况下的3条记录的平均值。此任务可以分解为几个简单的子任务:
numValue
3
4
N/A
3
N/A
下面示例中此数据源的数据适配器名称为str_num.csv。跳过文件的第一行-它包含列的名称
报告的模板
我使用Jaspersoft Studio(JSS)设计了一个报告模板。详细标注栏用于显示数据,摘要标注栏用于显示平均值
带有值(数字和非数字)的字段将为java.lang.String类型
第一个变量仅用于存储数值。如果值
表达方式为:
StringUtils.isNumeric($F{numValue})?Integer.valueOf($F{numValue}):null
Java库在这个表达式中使用,这就是为什么我们需要将报表的语言设置为Java,并为StringUtils类添加导入
第二个变量将为平均计算类型:
完整模板:
输出结果
JSS中生成的resut如下所示:
如果我们将第一个变量(用于存储数值)的表达式更改为:
StringUtils.isNumeric($F{numValue})?整型.valueOf($F{numValue}):0
结果将是:
-它是5条记录的平均值,而不是上面第一种情况下的3条记录的平均值。显示jrxml代码;显示异常。jrxml中这两列的数据类型是什么?@DaveJarvis这是我变量的表达式:Double.valueOf($F{column_1})。。显然,它将返回一个异常,因为N/A不能转换为double。。它出现在我的java应用程序上。报告调用的位置。(java.lang.NumberFormatException)@FahadAnjum在字符串中。第1列来自一个数据库,显示jrxml代码;显示异常。jrxml中这两列的数据类型是什么?@DaveJarvis这是我变量的表达式:Double.valueOf($F{column_1})。。显然,它将返回一个异常,因为N/A不能转换为double。。它出现在我的java应用程序上。回购协议在哪里