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
相关产品推荐
相关产品推荐

