題目
從鍵盤輸入一個整數(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 LoopsNumber {public static void main(String[] args) {System.out.println("請輸入回形數矩陣的大小:");Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();loop(num);scanner.close();}public static void loop(int num) {int[][] arr = new int[num][num];
// 右箭頭方向
// arr[0][0]=1;
// arr[0][1]=2;
// arr[0][2]=3;
// 下箭頭方向
// arr[1][2]=4;
// arr[2][2]=5;
// arr[2][1]=6;
// 左箭頭方向
// arr[2][0]=7;
// arr[1][0]=8;
// 上箭頭方向
// arr[1][1]=9;// 值int value=1;
// 行int i=0;
// 列int j=0;
// 矩陣最中心的值為num*num,此時賦值結束while (arr[i][j]!=Math.pow(num,2)){arr[i][j]=value;/*當遇到四個角的拐點時,進行判斷,然后對i和j的值進行遞增或者遞減;int型的二維數組在沒有賦值時內層元素默認為0,作為判斷條件*/
//右箭頭方向賦值if(j!=num-1&&arr[i][j+1]==0){
//為了預防還沒有走到最上面就往右箭頭方向賦值if (i>0&&arr[i-1][j]==0){i--;}else {j++;}
//下箭頭方向賦值}else if (i!=num-1&&arr[i+1][j]==0){i++;
//左箭頭方向賦值}else if (j>0&&arr[i][j-1]==0){j--;
//上箭頭方向賦值}else if (i>0&&arr[i-1][j]==0){i--;}value++;}for (int[] ints : arr) {for (int anInt : ints) {System.out.print(anInt + "\t");}System.out.println();}}
}