标题: 分享一道入学 考题,求更好方法 [打印本页] 作者: lmjssjj 时间: 2015-3-28 15:14 标题: 分享一道入学 考题,求更好方法 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。
public class Test9 {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner s = new Scanner(System.in);// 获取键盘存入
int n = s.nextInt();// 读取一个int
// System.out.println(n);
int[][] array = new int[n][n];// 建立二维数组存入数据
int count = 0;// 要循环次数
if (n % 2 == 0)
count = n / 2;// 偶数时好
else
count = n / 2 + 1;// 奇数时加1
int data = 1;// 初始化数据
// 循环开始填充数据
for (int i = 0; i < count; i++) {
// 从左到右
for (int j = i; j < n - i; j++) {//选填满顶部行
array[i][j] = data++;
}
// 从上到下
for (int k = i + 1; k < n - i ; k++) {
array[k][n - i - 1] = data++;
}
// 从右到左
for (int x = n - i - 2; x > i; x--) {
array[n - i - 1][x] = data++;
}
// 从下到上
for (int y = n - i - 1; y > i; y--) {
array[y][i] = data++;
}
}
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + "\t");
}
System.out.println();
}