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

Java创建2行3列二维数组元素缺失、3行2列正常运行的问题咨询

问题根因

你代码的核心错误是双层循环的内层判断条件误用了二维数组第一维的长度:

  • Java中的二维数组本质是「元素为一维数组的数组」,tab.length 永远获取的是第一维的长度(也就是你定义的行数)
  • 控制列数的内层循环需要获取当前行对应的一维数组的长度,即tab[i].length,才是每一行的列数

现象对应说明

你当前定义的是int[][] tab = new int[2][3],即2行3列:

  • tab.length的值是2,你的内外层循环都用j < tab.length作为判断条件,相当于每一行只遍历前2列
  • 总赋值/打印的元素只有2行*2列=4个,和你预期的2*3=6个相比恰好少了2个元素,和你描述的现象完全一致

你之前写3行2列时能正常运行,本质是巧合:如果严格定义int[][] tab = new int[3][2],内层循环用j < tab.length(值为3)会直接触发数组下标越界异常,说明你当时大概率误把行列参数写反了,才刚好匹配了循环条件。

修正后代码

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[][] tab = new int[2][3];
        int number = 1;

        for (int i = 0; i < tab.length; i++) {
            // 内层循环判断条件改为当前行的数组长度
            for (int j = 0; j < tab[i].length; j++) {
                tab[i][j] = number++;
            }
        }
        for (int i = 0; i < tab.length; i++) {
            // 打印逻辑的内层循环同样修改
            for (int j = 0; j < tab[i].length; j++) {
                System.out.printf("tab[%d][%d]=%d \n", i, j, tab[i][j]);
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者PokémonTrainer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:27:01