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

Java中初始化二维ArrayList用于循环求和的类实现问题

没问题,我来帮你完善这个自定义类,刚好能练习面向对象的基础写法~

完善SumsInLoop类实现整数对求和需求

我们可以优化类的设计,把输入数据封装为类的成员变量,让代码更符合面向对象的封装思路,同时补充完整求和逻辑,还可以加入简单的参数校验避免异常。

1. 调整类的成员变量与构造方法

把传入的对数和整数对列表作为类的私有成员变量,通过构造方法初始化,这样后续方法不用重复传参:

import java.util.ArrayList;

public class SumsInLoop {
    // 私有成员存储输入数据,用final保证不可变
    private final int numberOfPairs;
    private final ArrayList<ArrayList<Integer>> numbersList;

    // 构造方法初始化成员变量
    public SumsInLoop(int numberOfPairs, ArrayList<ArrayList<Integer>> numbersList) {
        this.numberOfPairs = numberOfPairs;
        this.numbersList = numbersList;
    }

2. 完整实现getSums方法

遍历每一对整数计算和,同时加入参数合法性校验,避免空指针或格式错误:

public ArrayList<Integer> getSums() {
        ArrayList<Integer> result = new ArrayList<>();
        
        // 校验输入列表是否合法
        if (numbersList == null || numbersList.size() != numberOfPairs) {
            throw new IllegalArgumentException("输入的整数对数量与指定对数不匹配");
        }

        for (ArrayList<Integer> pair : numbersList) {
            // 校验单个整数对的格式
            if (pair == null || pair.size() != 2) {
                throw new IllegalArgumentException("存在格式错误的整数对,请确保每个子列表包含2个整数");
            }
            // 计算两数之和并加入结果列表
            int sum = pair.get(0) + pair.get(1);
            result.add(sum);
        }
        
        return result;
    }
}

3. 测试使用示例

写个简单的主方法验证功能:

public class Main {
    public static void main(String[] args) {
        // 准备测试数据
        ArrayList<ArrayList<Integer>> testPairs = new ArrayList<>();
        testPairs.add(new ArrayList<>(){{add(10); add(20);}});
        testPairs.add(new ArrayList<>(){{add(5); add(3);}});
        testPairs.add(new ArrayList<>(){{add(100); add(200);}});

        // 创建类实例并调用求和方法
        SumsInLoop sumCalculator = new SumsInLoop(3, testPairs);
        ArrayList<Integer> sums = sumCalculator.getSums();
        
        // 输出结果:[30, 8, 300]
        System.out.println("整数对求和结果:" + sums);
    }
}

额外优化小建议

  • 可以把成员变量的类型改为更通用的List而非ArrayList,增强代码的灵活性;
  • 如果需要支持更多数值类型(比如Long、Double),可以把类改成泛型类,提升扩展性;
  • 可以返回不可修改的结果列表(比如Collections.unmodifiableList(result)),避免外部意外修改结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:12:37