给定N(N=M²)输出M×M格式排列的Java实现需求
实现完全平方数对应的顺序矩阵输出
首先明确需求:给定一个正整数n(n是某个正整数m的平方),程序需要先提示输入数字,然后输出一个m行m列的顺序排列矩阵,每个数字用空格分隔。比如输入9时输出3×3的矩阵,输入16时输出4×4的矩阵。
接下来是补全后的完整Java代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n; int m; System.out.println("Enter number of team"); n = scanner.nextInt(); m = (int) Math.sqrt(n); int[][] array = new int[m][m]; // 填充顺序矩阵的数值 for(int i=0;i<m;i++){ for(int j=0;j<m;j++){ // 第i行第j列的数值计算:i*m是前i行的总元素数,加j+1得到当前位置的顺序值 array[i][j] = i * m + j + 1; } } // 按格式输出矩阵 for(int i=0;i<m;i++){ for(int j=0;j<m;j++){ System.out.print(array[i][j] + " "); } // 每行输出结束后换行 System.out.println(); } scanner.close(); } }
关键逻辑说明:
- 矩阵填充:
array[i][j] = i * m + j + 1是核心计算式,比如当m=3(输入n=9)时,第1行(i=0)的数值就是0×3+0+1=1,0×3+1+1=2,0×3+2+1=3,刚好对应1、2、3;第2行(i=1)则是3+1=4,3+2=5,3+3=6,完美匹配顺序排列。 - 格式输出:外层循环控制行数,内层循环输出每行的元素,每个元素后加空格保证分隔,每行结束后换行,确保矩阵的行列结构清晰。
- (可选优化)如果需要处理非完全平方数的输入,可以添加
if(m*m !=n)的判断,提示用户输入不符合要求,但需求中已经明确n是完全平方数,所以暂时不需要这部分。
内容的提问来源于stack exchange,提问作者turkish developer
相关产品推荐
相关产品推荐

