如何生成指定格式的二维方阵?Java代码输出错误求排查
问题分析与修正方案
原代码存在的三个核心问题
- 数组尺寸不符:你创建了
7×7的数组new int[7][7],但需求是生成5×5的方阵,循环遍历7行7列会输出多余内容。 - 赋值逻辑错误:当前用
i+j给元素赋值,完全不符合目标方阵的数值规律。目标方阵中,每个位置(i,j)的数值是行索引与列索引的较小值加1(Java数组索引从0开始):比如第1行(i=0)所有元素都是min(0,j)+1=1,第2行(i=1)中j=0时为min(1,0)+1=1,j≥1时为min(1,j)+1=2,以此类推。 - 多余空行:代码开头的
System.out.println();会先输出一个空行,导致结果排版混乱。
修正后的代码
public class Main { public static void main(String[] args) { // 创建符合需求的5×5数组 int[][] nowatablica = new int[5][5]; for (int i = 0; i < nowatablica.length; i++) { for (int j = 0; j < nowatablica[i].length; j++) { // 核心逻辑:取i和j的较小值加1,匹配目标方阵规律 nowatablica[i][j] = Math.min(i, j) + 1; System.out.print(nowatablica[i][j] + " "); } System.out.println(); } } }
修正说明
- 将数组尺寸改为
5×5,确保生成的是需求中的方阵大小; - 用
Math.min(i, j) + 1实现目标数值的生成逻辑,完全匹配你要的方阵样式; - 移除了多余的开头空行输出,排版更整洁。
内容的提问来源于stack exchange,提问作者DanielMateusz
相关产品推荐
相关产品推荐

