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

Java交替数组方法编写问题:我的代码哪里出错了?

问题排查与修复方案

先聊聊你代码里的几个核心问题:

  • 循环变量未更新:你的for循环写的是i + 2,这根本不会改变i的值,直接会导致无限循环,得改成i += 2才能让循环正常推进。
  • 数组索引逻辑错误:你用c[i] = a[i]的写法完全不对,比如当i=2时,你会去取a[2],但此时对应的其实应该是a的第二个元素(索引1),正确的索引应该是i/2,因为每两次循环才会推进一次原数组的索引。
  • 未处理数组长度不一致的场景:如果两个输入数组一长一短,当前代码要么会触发数组越界异常,要么会丢掉较长数组的剩余元素。

修复后的代码(兼容等长/不等长场景)

public int[] alternate(int[] a, int[] b) {
    int[] c = new int[a.length + b.length];
    int currentIndex = 0;
    
    // 先交替填充两个数组共有的长度部分
    int minLength = Math.min(a.length, b.length);
    for (int i = 0; i < minLength; i++) {
        c[currentIndex++] = a[i];
        c[currentIndex++] = b[i];
    }
    
    // 填充a数组剩下的元素(如果a更长)
    for (int i = minLength; i < a.length; i++) {
        c[currentIndex++] = a[i];
    }
    
    // 填充b数组剩下的元素(如果b更长)
    for (int i = minLength; i < b.length; i++) {
        c[currentIndex++] = b[i];
    }
    
    return c;
}

测试验证

针对你给出的示例输入[1,2,3]和[10,20,30],这段代码会按顺序生成[1,10,2,20,3,30],完全符合预期。

如果输入是[1,2]和[10,20,30],结果会是[1,10,2,20,30];如果输入[1,2,3]和[10],结果则为[1,10,2,3],完美适配长度不一致的情况。

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

相关产品推荐
方舟 Agent Plan

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

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