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

LeetCode中Java循环触发数组越界异常的奇怪问题排查

数组越界异常原因分析与修复

核心问题:混淆了二维数组的行/列长度

你遇到的ArrayIndexOutOfBoundsException,本质是循环条件里错误混用了二维数组的行数和列数:

在预填充第一列的循环中:

for(int row = 1; row < grid[0].length; row ++){
    if(grid[row][0] == 1){
        grid[row][0] = 0;
        break;
    }
    grid[row][0] = 1;
}
  • grid.length代表二维数组的总行数,即包含多少个一维数组元素
  • grid[0].length代表第一行的总列数,即单个一维数组的元素个数

你的循环用grid[0].length作为行的遍历上限,当网格的列数大于行数时(比如1行2列的测试用例[[0,0]]),row会遍历到超过数组总行数的索引,此时访问grid[row][0]必然越界——因为数组只有grid.length行,最大行索引是grid.length-1。

修复方案

把循环条件里的grid[0].length替换为grid.length,确保行索引不会超过数组的总行数:

for(int row = 1; row < grid.length; row ++){
    if(grid[row][0] == 1){
        grid[row][0] = 0;
        break;
    }
    grid[row][0] = 1;
}

顺带提醒:第一行的循环也有同样问题

你预填充第一行的循环也犯了相同的错误:

for(int col = 1; col < grid.length; col ++){
    // ...
}

这里应该把循环条件改为col < grid[0].length,否则当行数大于列数时,同样会触发列索引越界。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:05:50