思路:循环输出,注意边界控制


import java.util.Scanner;

public class ch2_8_1求解n阶螺旋矩阵问题 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		while(n!=0) {
			
			print(n);
			n=in.nextInt();
		}
	}

	private static void print(int n) {
		// TODO Auto-generated method stub
		int a[][]=new int[n][n];
		int num=1;
		int i=0,j=0;
		while(num<=n*n) {
			while(j<n&&a[i][j]==0)
				a[i][j++]=num++;
			j--;i++;
			while(i<n&&a[i][j]==0)
				a[i++][j]=num++;
			i--;j--;
			while(j>=0&&a[i][j]==0)
				a[i][j--]=num++;
			j++;i--;
			while(i>=0&&a[i][j]==0)
				a[i--][j]=num++;
			i++;j++;
		}
		for(int m=0;m<n;m++) {
			for(int k=0;k<n;k++) {
				System.out.print(a[m][k]+" ");
				
			}
			System.out.println();
		}
	}

}