题目:输入n的值,以回字型数字依次增大的方式打印n*n的矩阵
输出结果示例:

方法:
1.我们用一个二维数组保存这个矩阵,用a代表的不同的值代表不同的方向,以6*6为例,我们在最外层只需要从左到右打印1-5,从上到下打印6-10,从右到左打印11-15,从下到上打印16-20.设置value的初始值,每打印一次我们让value的值+1,找出层数和打印个数的关系即可。

2.我们会发现当n为奇数的时候,例如等于7时,可以绕三圈多出一个,而n=6时,可以正好绕三圈。我们分两种情况,即n为奇和n为偶数。找出规律进行输出。
3.我们用while循环加a的判断进行循环打印,当层数达到一定数目时,终止循环。
4.实现代码(参数可变):
public class dance {
public static void main(String[] args) {
printByHui(20);
}
public static void printByHui(int n){
int value =1;//初始的值
int a = 1; //1代表从左到右 2代表从上到下 3代表从右到做 4代表从下到上
int ceng = 1;//其中的值代表的是第几层
int[][] show = new int[n][n];
while(true){
if(a==1){
for(int i=0;i<(n-1)-(ceng-1)*2;i++){ // 6 4 2 0
show[ceng-1][i+ceng-1]=value;
value++;
}
a=2;
}
else if(a==2){
for(int i=0;i<(n-1)-(ceng-1)*2;i++){ // n = 6
show[i+ceng-1][n-ceng]=value;
value++;
}
a=3;
}
else if(a==3){
for(int i=0;i<(n-1)-(ceng-1)*2;i++){
show[n-ceng][n-ceng-i]=value;
value++;
}
a=4;
}
else if(a==4){
for(int i=0;i<(n-1)-(ceng-1)*2;i++){
show[n-ceng-i][ceng-1]=value;
value++;
}
ceng++;
a=1;
}
if(ceng==n/2+1){
break;
}
}
if(n%2==0){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print(show[i][j]+"\t");
}
System.out.println();
}
}
if(n%2==1){
int mid = 7/2;
show[mid][mid]=value;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print(show[i][j]+"\t");
}
System.out.println();
}
}
}
}
5.以参数20为例输出打印结果:

该博客介绍了如何使用Java编程实现回字型数字矩阵的输出。内容包括根据输入的n值,按照从外到内,顺时针和逆时针交替打印1到n*n的数字,特别处理了奇数和偶数n的情况。通过分析层数和打印个数的关系,利用二维数组和循环条件判断完成矩阵的打印。
1602

被折叠的 条评论
为什么被折叠?



