You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java的Number泛型类中计算ArrayList的数字平均值

报错原因与解决方法

你遇到的编译报错核心原因是:Java 不支持对Number类型的泛型实例直接使用+运算符,需要先调用Number类的内置方法把元素转为基础数值类型再参与计算。除此之外你的代码还存在几个隐含问题:

  • 循环边界错误:i <= myarraylist.size()会触发数组下标越界,ArrayList的合法下标范围为0 ~ size()-1,需改为i < myarraylist.size()
  • 精度缺失风险:用var average = 0声明变量会被推导为int类型,计算浮点平均值会丢失精度,建议直接声明为double类型
  • 缺少返回值:方法声明了返回double类型,现有代码没有返回计算结果
  • 除以零风险:如果ArrayList为空,直接除以元素个数会触发算术异常,需要做兼容处理

修正后的完整实现

public double average(){
    double sum = 0.0;
    for (T num : myarraylist) {
        // 调用Number类的doubleValue方法将泛型元素转为double类型再相加
        sum += num.doubleValue();
    }
    // 空列表返回0,否则返回总和除以元素个数的平均值
    return myarraylist.isEmpty() ? 0.0 : sum / myarraylist.size();
}

补充说明

Number是Java所有数值包装类(Integer、Long、Float、Double等)的公共父类,内置了doubleValue()、intValue()、longValue()等方法,可将任意数值类型的包装类实例转为对应基础类型的值,此处使用doubleValue()可以最大程度避免平均值计算的精度损失。

内容的提问来源于stack exchange,提问作者Ruben Ferreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:36:04