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

Java中对ArrayList求和报+=运算符未定义错误如何解决

报错原因

你声明的是List<Object>泛型的列表,调用list.get(i)返回的是Object类型对象,Java语法不支持直接对Object和int类型执行+=运算。报错中提到double类型,说明你JTable第二列存储的实际值为Double类型。

解决方法

将从列表取出的元素先转换为数值类型再参与累加即可,以下是修改后的示例代码:

JTable j = new JTable(data, columnNames);
List<Object> list = new ArrayList<>();

for (int i = 0; i < j.getModel().getRowCount(); i++) {
    list.add(j.getModel().getValueAt(i, 1));
}
int sum = 0;
for (int i = 0; i < list.size(); i++) {
    // 先做类型转换,再转int
    Double num = (Double) list.get(i);
    // 直接截断小数转int
    sum += num.intValue();
    // 如果需要四舍五入取整可以替换为下面这行
    // sum += Math.round(num);
}

System.out.println(sum);

优化建议

你也可以在往列表添加元素的时候就完成类型转换,把列表泛型改成Integer或者Double,避免后续重复转换:

JTable j = new JTable(data, columnNames);
List<Integer> list = new ArrayList<>();

for (int i = 0; i < j.getModel().getRowCount(); i++) {
    Double value = (Double) j.getModel().getValueAt(i, 1);
    list.add(value.intValue());
}
int sum = 0;
// 可以直接用增强for循环遍历
for (int num : list) {
    sum += num;
}

System.out.println(sum);

注意事项

如果JTable对应列可能存在空值,需要在类型转换前添加非空判断,避免抛出空指针异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:24:03