• 数组回形数格式方阵赋值


    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]+"	");
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    阅读笔记
    个人总结
    《软件需求(第二版)》阅读笔记02
    《软件需求(第二版)》阅读笔记01
    问题账户需求分析
    2017年秋季个人阅读计划
    阅读笔记一之《软件需求与分析》
    每日总结1
    开发体会(模块3.商品分类管理)
    个人总结
  • 原文地址:https://www.cnblogs.com/huangzhen22/p/14339171.html
Copyright © 2020-2023  润新知