java 数字螺旋矩阵输出

群里看到一个题,感觉有趣就写了下,写的不太好,随便看看。


public static void main(String[] args) {
        int n=6;
        String[][] res=new String[n][n];
        int x=0;//纵坐标
        int y=0;//横坐标
        int a =n-1;//横坐标一次循环最大值
        int b=n-1;//纵坐标一次循环最大值
        int i =0;//横坐标一次循环最小值
        int j=-1;//纵坐标一次循环最小值
        //获取输出数字前面要加几个0;
        String s="";
        for (int k = 0; k <(n*n+"").length(); k++) {
            s=s+"0";
        }
        DecimalFormat df=new DecimalFormat(s);
        //设置数值位置
        for(int m=1;m<=n*n;m++){
            String str=df.format(m);
            res[x][y]=str;
            if (y < a && x <= i) {
                y++;//向右
                continue;
            }
            if(y==a&&x==i){
                j++;
            }
            if(y==a&&x<b){
                x++;//向下
                continue;
            }
            if(x==b&&y==a){
                i++;
            }
            if(y>j&&x>=b){
                y--;//向左
                continue;
            }
            if(x==b&&y<=j){
                a--;
            }
            if(x>i&&y==j){
                x--;//向上
            }
            if(x==i&&y==j){
                b--;
            }
        }
        //输出
        for(int c=0;c<n;c++){
            for(int d=0;d<n;d++){
                System.out.print(res[c][d]+"   ");
            }
            System.out.println("");
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值