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

Java二维数组遍历抛出ArrayIndexOutOfBoundsException异常求助

异常触发原因

核心问题是内层for循环的判断条件写错了控制变量:内层循环负责遍历列下标j,但判断条件写的是i < m1[0].length,而非j < m1[0].length。
具体执行逻辑:

  • 你定义的二维数组m1为2行3列结构,行下标最大为1,列下标最大为2
  • 外层循环i第一次取值为0时进入内层循环:
    • 内层循环判断条件为i < 3,此时i值为0永远满足判断条件,循环不会自动终止
    • j会持续自增:j=0、1、2时分别输入前三个数1、2、3,运行正常;当j自增到3时仍会继续执行输入逻辑,你输入第4个数4之后,程序尝试给m1[0][3]赋值,此时列长度为3,下标最大为2,直接触发数组越界异常。
修复方案

将内层for循环的判断条件替换为j的边界判断即可,推荐写成j < m1[i].length,可适配单行长度不一致的二维数组场景,兼容性更好。
修复后完整代码:

import java.util.Scanner;

public class arrays {
    public static void main(String[] args) {
        int i;
        int [][] m1 = new int[2][3];
        int j;

        Scanner sc = new Scanner(System.in);
        
        System.out.println(m1.length);
        System.out.println(m1[0].length);

        for(i = 0; i < m1.length; i++){
            // 仅修改此处判断变量,把i替换为j即可
            for(j = 0; j < m1[i].length; j++) {
                m1[i][j] = sc.nextInt();
            }
        }
        sc.close();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:15:02