Java 10×10二维数组按指定规则填充实现求助
修正10×10二维数组填充代码
首先明确填充规则:从数组右上角开始沿左下方向依次填充1~100,每填满一条斜线后,调整起始位置继续填充(斜线起始行未到最后一行时,起始行+1;否则起始列-1)。
原代码存在的问题
- 未初始化二维数组
a,会触发编译错误 - 内层循环的索引范围逻辑错误,无法覆盖所有单元格,填充位置不符合目标样式
- 未处理数组默认初始值,未填充的位置会保留0,不符合完整填充需求
修正后的代码
public class ArrayFill { public static void main(String[] args) { int[][] a = new int[10][10]; // 初始化10×10二维数组 int n = 1; // 遍历所有斜向线,共19条(10+10-1) for (int k = 0; k < 19; k++) { // 确定每条斜线的起始行和列 int startRow = k < 10 ? 0 : k - 9; int startCol = k < 10 ? 9 - k : 0; // 沿左下方向填充,直到超出数组边界 int i = startRow; int j = startCol; while (i < 10 && j < 10) { a[i][j] = n++; i++; j++; } } // 格式化打印数组,确保数字对齐 for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.printf("%3d", a[i][j]); } System.out.println(); } } }
代码说明
- 数组初始化:先创建
int[][] a = new int[10][10];,避免空指针或编译错误 - 斜线遍历:通过
k遍历19条斜线,k从0到18:- 当
k < 10时,斜线起始行固定为0,起始列从9递减到0 - 当
k >=10时,斜线起始列固定为0,起始行从1递增到9
- 当
- 填充逻辑:每条斜线上的元素行、列索引同时递增,依次填充数字
n并自增,直到超出数组边界 - 格式化输出:用
printf("%3d", ...)让输出数字对齐,更清晰展示数组结构
内容的提问来源于stack exchange,提问作者ZN00PS
相关产品推荐
相关产品推荐

