1. 问题描述:
2. 思路分析
仔细观察,可以发现可以分为四个循环为一个大循环,在循环里一次判断判断下一个元素是否有值,假如有值就不执行循环,因为数组里面没有初始化的时候默认的值为0,所以此时判断一下就好了
依次四个循环:
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int a[][];
int count = 1;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
a = new int[n][n];
int x = 0,y = n - 1;
a[x][y] = 1;
while(count < n * n){
while(x+1<n&&(a[x+1][y])==0){
a[++x][y] = ++count;
}
while(y-1>=0&&(a[x][y-1])==0){
a[x][--y] = ++count;
}
while(x-1>=0&&(a[x-1][y])==0){
a[--x][y] = ++count;
}
while(y+1<n&&(a[x][y+1]==0)){
a[x][++y] = ++count;
}
}
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
System.out.printf("%3d", a[i][j]);
}
System.out.print("\n");
}
sc.close();
}
}
3. 运行结果截图:
控制台输入5:结果如下: