java列印出迴文數格式方陣

果凍兒upupup發表於2020-11-05

回形數格式方陣的實現
從鍵盤輸入一個整數(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

package com.atguigu.contact;
import java.util.Scanner;

public class ArrayTest1 {
	public static void main(String[] args) {
		System.out.println("請輸入一個整數(1-20):");
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[][] huiwen = new int[num][num];
		
        //方法1		
		int count = 1;
		int minX = 0;// x軸的最小下標
		int minY = 0;// Y軸的最小下標
		int maxX = num - 1;// x軸的最大下標
		int maxY = num - 1;// Y軸的最大下標
		while (minX <= maxX) {
			//向右移動
			for (int i = minX; i <= maxX; i++) {
				huiwen[minY][i] = count;
				count++;
			}
			//向下移動
			minY++;//Y軸的最小下標+1
			for (int i = minY; i <= maxY; i++) {
				huiwen[i][maxX] = count;
				count++;
			}
            //向左移動
            maxX--;//X軸的最大下標-1
			for (int i = maxX; i >= minX; i--) {
				huiwen[maxY][i] = count;
				count++;
			}
            //向上移動
            maxY--;//Y軸的最大下標-1
			for (int i = maxY; i >= minY; i--) {
				huiwen[i][minX] = count;
				count++;
			}	
            minX++;//X軸的最小下標-1
		}
		
/* 
        //方法2 

		int sum = num * num;
		int k = 1;
		int i = 0;
		int j = 0;
		for (int c = 1; c <= sum; c++) {
			if (k == 1) {
				if (j < num && huiwen[i][j] == 0) {
					huiwen[i][j++] = c;
				}else {
					k = 2;
					c--;
					j--;
					i++;
				}				
			}else if (k == 2) {
				if (i < num && huiwen[i][j] == 0) {
					huiwen[i++][j] = c; 
				}else {
					k =3;
					c--;
					i--;
					j--;
				}
			}else if (k ==3) {
				if (j >= 0 && huiwen[i][j] == 0) {
					huiwen[i][j--] = c; 
				}else {
					k = 4;
					c--;
					i--;
					j++;		
				}
			}else if (k ==4) {
				if (i >= 0 && huiwen[i][j] == 0) {
					huiwen[i--][j] = c;
				}else {
					k = 1;
					c--;
					i++;
					j++;
				}
			}
		}
        
*/   		
		//列印出迴文數格式方陣
        for(int p = 0; p < huiwen.length; p++) {
        	for(int q = 0; q < huiwen[p].length; q++) {
        		System.out.print(huiwen[p][q]+"\t");
        	}
        	System.out.println();
        }    
	}
}

輸出結果:
在這裡插入圖片描述

相關文章