数组回形数格式方阵赋值

package array_pratice;

import java.util.Scanner;

/**
 * 回形数格式方阵的实现
 * 从键盘输入一个整数(1~20)
 * 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出:
 * 1 2
 * 4 3
 * 输入数字3,则程序输出:
 * 1 2 3
 * 8 9 4
 * 7 6 5
 * 输入数字4, 则程序输出:
 * 1   2   3   4
 * 12  13  14  5
 * 11  16  15  6
 * 10   9  8   7
 */
public class RectangleTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数");
        int len = scanner.nextInt();
        doRectangle0(len);
    }
    private static void doRectangle0(int len){
        int[][] arr = new int[len][len];
        int count =len*len;
        //默认向右 1 向右 2 向下 3 向左 4 向上
        int arrow =1;
        int x=0;
        int y=0;
        for (int val = 1; val <= count; val++) {
            /**
             *  * 1 2 3
             *  * 8 9 4
             *  * 7 6 5
             */
            if(arrow==1){
                //0<9 && [0][0]==0
                if(y<len&&arr[x][y]==0){
                    arr[x][y++]=val;
                    //arr[0][1]=1;
                }
                else{
                    arrow=2;
                    x++;
                    y--;
                    val--;
                }
            }
            else if(arrow==2){
                if (x < len && arr[x][y] == 0) {
                    arr[x++][y] = val;
                } else {
                    arrow = 3;
                    x--;
                    y--;
                    val--;
                }
            } else if (arrow == 3) {
                if (y >= 0 && arr[x][y] == 0) {
                    arr[x][y--] = val;
                } else {
                    arrow = 4;
                    x--;
                    y++;
                    val--;
                }
            } else if (arrow == 4) {
                if (x >= 0 && arr[x][y] == 0) {
                    arr[x--][y] = val;
                } else {
                    arrow = 1;
                    x++;
                    y++;
                    val--;
                }
            }

        }

        for (int x0 = 0; x0 < arr.length; x0++) {
            for (int y0 = 0; y0 < arr[x0].length; y0++) {
                System.out.print(arr[x0][y0]+"\t");
            }
            System.out.println();
        }
    }
}

 

posted @ 2021-01-28 12:35  黄忠  阅读(173)  评论(0编辑  收藏  举报