回字型输出(java版本)

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:输入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为例输出打印结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值