A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

写一方法,打印等长的二维数组,要求从
* 1开始的自然数由方阵的最外圈向内螺旋方式地顺
* 序排列。 如: n = 4 则打印:
* 1        2        3        4
   12        13        14        5
   11        16        15        6
   10        9        8        7

点评

此入学面试请自己解决.一般看完视频都可以自行解决  发表于 2014-4-26 16:17

3 个回复

倒序浏览
  1. package test;

  2. import java.util.Scanner;

  3. public class Test {
  4.         public static void main(String[] args) {

  5.                 System.out.println("请输入数字:");
  6.                 Scanner s = new Scanner(System.in);
  7.                 Integer i = s.nextInt();

  8.                 int[][] matrix = new int[i][i];
  9.                 int max = i * i;
  10.                 int row = 0, col = 0;
  11.                 int direction = 0;
  12.                 for (int j = 1; j <= max; j++) {
  13.                         matrix[row][col] = j;
  14.                         switch (direction) {
  15.                         case 0:
  16.                                 if (col + 1 >= i || matrix[row][col + 1] > 0) {
  17.                                         direction += 1;
  18.                                         direction %= 4;
  19.                                         row += 1;
  20.                                 } else {
  21.                                         col = col + 1;
  22.                                 }
  23.                                 break;
  24.                         case 1:
  25.                                 if (row + 1 >= i || matrix[row + 1][col] > 0) {
  26.                                         direction += 1;
  27.                                         direction %= 4;
  28.                                         col -= 1;
  29.                                 } else {
  30.                                         row = row + 1;
  31.                                 }
  32.                                 break;
  33.                         case 2:
  34.                                 if (col - 1 < 0 || matrix[row][col - 1] > 0) {
  35.                                         direction += 1;
  36.                                         direction %= 4;
  37.                                         row = row - 1;
  38.                                 } else {
  39.                                         col = col - 1;
  40.                                 }
  41.                                 break;
  42.                         case 3:
  43.                                 if (row - 1 < 0 || matrix[row - 1][col] > 0) {
  44.                                         direction += 1;
  45.                                         direction %= 4;
  46.                                         col += 1;
  47.                                 } else {
  48.                                         row = row - 1;
  49.                                 }
  50.                                 break;
  51.                         default:
  52.                                 System.out.println("ERROR");
  53.                                 System.exit(0);
  54.                         }
  55.                 }
  56.                 for (int j = 0; j < i; j++) {
  57.                         for (int k = 0; k < i; k++) {
  58.                                 if (matrix[j][k] < 10)
  59.                                         System.out.print("  " + matrix[j][k]);
  60.                                 else
  61.                                         System.out.print(" " + matrix[j][k]);
  62.                         }
  63.                         System.out.println("");
  64.                 }
  65.         }
  66. }
复制代码
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马