如何在Java中无需声明初始化数组打印1-9组成的3×3二维数组
问题
我现有一段可打印1-9组成的3×3矩阵的Java代码,如下所示:
// declare and initialize a 3x3 matrix int matrix[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; // display matrix using for loops // outer loop for row for(int row = 0; row < matrix.length; row++) { // inner loop for column for(int column=0; column < matrix[row].length; column++) { System.out.print(matrix[row][column] + " "); } System.out.println(); // new line }
注:原代码中row =-0为笔误,已修正为row = 0
我希望无需声明和初始化数组,就能打印出由1-9组成的3×3二维数组,请问该如何实现?
解决方案
你可以通过计算行列对应的数值或直接输出格式化内容来实现,无需提前创建数组。以下是几种实用的实现方式:
方法一:基于行列索引计算
利用行号*3 + 列号 +1的公式直接生成对应数字,逻辑清晰直观:
// 外层循环控制行,共3行 for (int row = 0; row < 3; row++) { // 内层循环控制列,每行3列 for (int col = 0; col < 3; col++) { // 计算当前位置的数字:行号*3 + 列号 +1 System.out.print((row * 3 + col + 1) + " "); } System.out.println(); // 每行结束换行 }
方法二:单变量递增打印
用一个变量从1开始递增,每打印3个数字就换行,代码更简洁:
int num = 1; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { System.out.print(num++ + " "); } System.out.println(); }
方法三:直接打印字符串(极简版)
如果不需要循环逻辑,直接按格式打印字符串最省事:
System.out.println("1 2 3"); System.out.println("4 5 6"); System.out.println("7 8 9");
这些方法都不需要创建和初始化数组,直接生成或输出目标矩阵内容。
内容的提问来源于stack exchange,提问作者Aziz Bokhari
相关产品推荐
相关产品推荐

