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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:45:34