/**
* 6-3
* 编程实现如下要求的螺旋矩阵
* 螺旋方阵存放在n*n的二维数组中并将其打印输出
* 要求 n 由程序读入
* 数字螺旋方阵由程序自动生成
* (非人为的初始化或逐个输入)
*/
import java.io.*;
import java.util.*;
public class Test{
public static void main(String[] args){
/*声明一个维数是n的数组*/
int n=0;
System.out.print("请输入螺旋矩阵的维数n:");
Scanner read = new Scanner(System.in);
n = read.nextInt();
int array[][] = new int[n][n];
/*为数组中的各个元素赋值*/
int elem = 1; //初始化第一个元素的值为1
int cycleNumber=0; //判断循环的次数
if (n % 2 != 0)
cycleNumber=n/2+1;
else
cycleNumber=n/2;
for(int i = 0; i < cycleNumber; i++){ //从外到内开始循环
for (int j = i; j < n-i; j++) //从左到右赋值
{
array[i][j]=elem;
elem++;
}
for (int k = i+1; k < n-i; k++) //从上到下赋值
{
array[k][n-i-1]=elem;
elem++;
}
for (int l = n-i-2; l >= i; l--)//从右到左赋值
{
array[n-i-1][l]=elem;
elem++;
}
for (int m = n-i-2; m > i; m--) //从下到上赋值
{
array[m][i]=elem;
elem++;
}
}
/*输出数组*/
for(int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
System.out.printf("%-3d", array[i][j]);
System.out.println();
}
}
}本文出自 “hacker” 博客,请务必保留此出处http://anglecode.blog.51cto.com/5628271/1619860
原文:http://anglecode.blog.51cto.com/5628271/1619860