规则二维数组要求每行长度相同,应声明固定尺寸如int4确保每行均为5列,避免先声明int[4][]再逐行new导致长度不一致;录入时需按预设列数强制校验输入数量。

规则二维数组要求每行长度相同,录入时若不统一列数,就容易在后续计算或遍历中出错。关键不是“能不能存”,而是“怎么确保每一行都按预期填满”。
明确声明尺寸再录入
创建时就固定行列数,避免运行时动态调整导致不一致:
- 用 int[][] scores = new int[4][5]; 声明 4 行 × 5 列的数组,所有行长度自动为 5
- 不要先声明 int[][] scores = new int[4][]; 再逐行 new,那样容易漏设或设错长度
- 如果科目数、学生数已知(比如 4 门课、每门 5 个成绩),静态尺寸最稳妥
录入过程强制校验数量
用户输入阶段就要堵住不一致源头:
- 每轮录入前,提示“请输第 X 行的 Y 个数据”,Y 就是预设列数
- 用循环控制输入次数:for (int j = 0; j ,不依赖用户口头确认
- 若用户少输或多输,程序应中断并提示重输,而不是跳过或截断
初始化后立即验证结构
录入完成不等于结构可靠,加一层防御性检查:
- 遍历每行,确认 scores[i].length == scores[0].length
- 发现某行长度异常,抛出 IllegalStateException 并说明哪一行不符
- 尤其注意:new int[3][4] 创建后,即使某行被意外赋值为 null,scores[i] 访问会触发 NullPointerException,不是 ArrayIndexOutOfBoundsException
配合 Arrays 工具类提升可读性与安全性
打印和调试时用标准方式,避免手动遍历引入新错误:
- 用 Arrays.deepToString(scores) 一次性输出完整结构,直观看出是否每行元素数一致
- 排序或复制前,先调用 Objects.requireNonNull(scores) 和逐行判空,防止空引用传播
- 如需导出或校验,可封装方法:boolean isRegular(int[][] arr) 返回 true 仅当所有非 null 行长度相等
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











