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

Java两个int数组同位置元素求和代码错误排查

代码错误排查

核心问题

  • 数组下标越界:你在循环中使用长数组的长度作为边界,当i超过短数组的最大下标后,依然读取短数组的对应索引元素,会直接抛出ArrayIndexOutOfBoundsException异常。以你给出的测试用例为例,arrayA长度为5,当循环到i=5时访问arrayA[5]就会触发报错。
  • for循环初始化逻辑错误:你把for循环的初始化语句写成了arrayB[i] = 0/arrayA[i] = 0,这里本该对循环变量i做初始化,你反而直接把长数组首个下标的原始值覆盖为0,丢失了原有数据。

修复思路

循环仅执行到短数组的长度即可,短数组没有对应索引的长数组部分不需要修改,保留原值就符合题目要求。

修复后代码

public class TwoArrays {
    public static void main(String[] args) {
        int[] arrayA = {1, 5, 2, 6, 8};
        int[] arrayB = {4, 5, 7, 10, 7, 9, 7};
        int lengthA = arrayA.length;
        int lengthB = arrayB.length;
        // 取短数组长度作为相加循环的边界
        int minLength = Math.min(lengthA, lengthB);

        if (lengthA < lengthB) {
            // 以更长的arrayB为结果载体
            for (int i = 0; i < minLength; i++) {
                arrayB[i] = arrayA[i] + arrayB[i];
            }
            // 输出结果
            for (int num : arrayB) {
                System.out.println(num);
            }
        } else {
            // 长度相等或者arrayA更长时,以arrayA为结果载体
            for (int i = 0; i < minLength; i++) {
                arrayA[i] = arrayA[i] + arrayB[i];
            }
            // 输出结果
            for (int num : arrayA) {
                System.out.println(num);
            }
        }
    }
}

测试用例运行结果

你给出的测试用例中arrayB更长,相加后arrayB的最终值为[5, 10, 9, 16, 15, 9, 7],对应输出就是上述数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:08