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

合并两个String数组时第二个数组元素始终为null的问题排查

数组合并后出现null值的问题分析

问题根源

你的代码里第二个循环存在两个致命问题:

  1. 循环条件错误:
    第二个循环的条件是i < n2,这里n1=2、n2=2,循环起始值i=n1=2,此时2 < 2不成立,导致这个循环完全没有执行,array3的后两个位置始终是String数组默认的null值。
  2. 索引变量j的错误定义:
    就算循环条件改对了,你把int j=0;写在了循环体内部,每次循环都会重置j为0,最终只会把array2[0]重复赋值,无法遍历array2的所有元素。

修正后的代码

方式一:修正循环逻辑

public class Q4 {
    public static void main(String[] args){
        String array1[] = new String[]{"Ahmad", "Adam"};
        String array2[] = new String[]{"Mick", "Ali"};
        int n1 = array1.length;
        int n2 = array2.length;
        String []array3 = new String[n1+n2];

        // 复制第一个数组
        for(int i = 0; i < n1; i++)
            array3[i] = array1[i];

        // 修正第二个循环:循环条件改为i < n1+n2,j在循环外初始化
        int j = 0;
        for(int i = n1; i < n1 + n2; i++) {
            array3[i] = array2[j++];
        }

        // 输出结果
        for(int i = 0; i<array3.length; i++)
            System.out.print(array3[i] + " ");
    }
}

方式二:更简洁的索引映射

不需要额外的j变量,直接用i - n1作为array2的索引:

public class Q4 {
    public static void main(String[] args){
        String array1[] = new String[]{"Ahmad", "Adam"};
        String array2[] = new String[]{"Mick", "Ali"};
        int n1 = array1.length;
        int n2 = array2.length;
        String []array3 = new String[n1+n2];

        for(int i = 0; i < n1; i++)
            array3[i] = array1[i];

        // 直接用i - n1获取array2的对应索引
        for(int i = n1; i < n1 + n2; i++) {
            array3[i] = array2[i - n1];
        }

        for(int i = 0; i<array3.length; i++)
            System.out.print(array3[i] + " ");
    }
}

输出结果

修正后运行代码,会得到预期输出:

Ahmad Adam Mick Ali

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:15:49