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

如何在Java中用单个循环打印两个不同长度但同类型的数组?

问题分析与解决方案

嘿,我来帮你排查这段代码的问题啦!

问题根源

你这段代码会抛出ArrayIndexOutOfBoundsException,原因很直观:

  • arr1的长度是5,循环条件i<arr1.length会让循环执行5次(i从0到4)
  • 但arr2只有2个元素,有效索引仅为0和1,当i走到2时,访问arr2[i]就会超出它的索引范围,直接触发数组越界异常。

几种可行的修复方案

根据你的实际需求,有以下几种修复方式:

1. 只遍历两个数组中较短的长度

如果想对应输出两个数组相同索引位置的元素,只遍历到较短数组的末尾即可:

public static void main(String[] args) { 
    int arr1[]= {1,2,3,4,5}; 
    int arr2[]= {6,7}; 
    // 取两个数组长度的最小值作为循环上限
    for(int i=0;i<Math.min(arr1.length, arr2.length);i++) { 
        System.out.println(arr1[i]); 
        System.out.println(arr2[i]); 
    } 
}

这段代码会输出1、6、2、7,之后就停止循环,完美避免越界问题。

2. 分别遍历两个数组

如果想把两个数组的所有元素都输出,分开循环是最稳妥的方式:

public static void main(String[] args) { 
    int arr1[]= {1,2,3,4,5}; 
    int arr2[]= {6,7}; 
    // 先遍历arr1的所有元素
    for(int i=0;i<arr1.length;i++) { 
        System.out.println(arr1[i]); 
    } 
    // 再遍历arr2的所有元素
    for(int i=0;i<arr2.length;i++) { 
        System.out.println(arr2[i]); 
    } 
}

这样会依次输出1、2、3、4、5、6、7,不会有任何异常。

3. 补全较短数组的默认值输出

如果希望对应位置输出,当较短数组元素用完时补默认值(比如0),可以加个简单判断:

public static void main(String[] args) { 
    int arr1[]= {1,2,3,4,5}; 
    int arr2[]= {6,7}; 
    // 取较长数组的长度作为循环上限
    for(int i=0;i<Math.max(arr1.length, arr2.length);i++) { 
        // 输出arr1的元素,超出长度则补0
        System.out.println(i < arr1.length ? arr1[i] : 0); 
        // 输出arr2的元素,超出长度则补0
        System.out.println(i < arr2.length ? arr2[i] : 0); 
    } 
}

这段代码运行到i=2及之后时,arr2会输出0,直到循环跑完5次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:39:20