package com.itheima;
import java.util.Scanner;
/**
* 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
*
* 1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
*
* @author weimingzhu
*
*/
public class Test7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = sc.nextInt();
int[][] arr = new int[n][n];
//设置二维数组第一个数初始化值为1
arr[0][0] = 1;
//定义一个变量count为数组长度-1
int count = arr.length - 1;
//设置方阵由外层到里层的循环
for (int i = 0; i < arr.length; i++) {
//设置方阵最外层的值
//设置方阵第一行的值
for (int j = 1; j < arr.length; j++){
//如果对于值已经赋值过,则不用再赋值
if (arr[i][j] > 0){continue;}
arr[i][j] = arr[i][j-1] + 1;
}
//设置方阵最后一列的值
for (int j = 1; j < arr.length; j++){
if (arr[j][count-i] > 0){continue;}
arr[j][count-i] = arr[j-1][count-i] + 1;
}
//设置方阵最后一行的值
for (int j = 1; j < arr.length; j++){
if (arr[count-i][count-j] > 0){continue;}
arr[count-i][count-j] = arr[count-i][count-j+1] + 1;
}
//设置方阵第一列的值
for (int j = count-i; j > 0; j--){
if (arr[j][i] > 0){continue;}
arr[j][i] = arr[j+1][i] + 1;
}
}
//按照方阵形式打印该二维数组
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println("");
}
}
} |