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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 栗新岩 于 2015-4-1 09:06 编辑

  1. package myjava;

  2. public class LuoXuan {
  3.         public static void main(String[] args) {
  4.                 int n = 17;//输入的行与列数
  5.                 int[][] arr = new int[n][n];//创建二维数组
  6.                 int x = 0;
  7.                 int y = 0;//记录行与列的脚标
  8.                 int num = 1;//记录数据//循环次数,一圈为一次循环,需要n/2次循环
  9.                 for (int con = 0; con < n / 2; con++) {
  10. //从左向右
  11.                         while (true) {
  12.                                 arr[x][y] = num;

  13.                                 if (y == n - 1 - con) {
  14.                                         break;
  15.                                 }
  16.                                 num++;
  17.                                 y++;
  18.                         }
  19. //从上向下
  20.                         while (true) {
  21.                                 arr[x][y] = num;
  22.                                 if (x == n - 1 - con) {
  23.                                         break;
  24.                                 }
  25.                                 num++;
  26.                                 x++;
  27.                         }
  28. //从右向左
  29.                         while (true) {
  30.                                 arr[x][y] = num;
  31.                                 if (y == 0 + con) {
  32.                                         break;
  33.                                 }
  34.                                 num++;
  35.                                 y--;
  36.                         }
  37. //从下向上
  38.                         while (true) {
  39.                                 arr[x][y] = num;
  40.                                 if (x == 1 + con) {
  41.                                         break;
  42.                                 }
  43.                                 num++;
  44.                                 x--;
  45.                         }
  46.                 }
  47. //当n为奇数时,剩最中间一个位置,补上
  48.                 if (n % 2 == 1) {
  49.                         arr[n / 2][n / 2] = num + 1;
  50.                 }
  51. //打印二维数组
  52.                 for (int a = 0; a < n; a++) {
  53.                         for (int b = 0; b < n; b++) {
  54.                                 System.out.print(arr[a] [b]+ "\t");
  55.                         }
  56.                         System.out.println();
  57.                 }

  58.         }
  59. }
复制代码
  1. 请大神指正~
复制代码

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
吊到没朋友!隔壁的向你和青默打个招呼。:victory:
回复 使用道具 举报
健健 发表于 2015-4-1 16:28
吊到没朋友!隔壁的向你和青默打个招呼。

:handshake:lol
回复 使用道具 举报
牛x!:funk::funk:
回复 使用道具 举报
哥们儿请教一下,break那个判断你说我把它的类似反条件放到放到true的位置是不是也可以啊
回复 使用道具 举报
本帖最后由 JarryHorse 于 2015-4-1 19:02 编辑
  1. </blockquote></div><div class="blockcode"><blockquote>public class LuoXuan {
  2.         public static void main(String[] args) {
  3.                 int n = 9;//输入的行与列数
  4.                 int[][] arr = new int[n][n];//创建二维数组
  5.                 int x = 0;
  6.                 int y = 0;//记录行与列的脚标
  7.                 int num = 1;//记录数据//循环次数,一圈为一次循环,需要n/2次循环
  8.                 for (int con = 0; con < n / 2; con++) {
  9. //从左向右
  10.                         while (y < n - 1 - con)
  11.                                 arr[x][y++] = num++;
  12. //从上向下
  13.                         while (x < n - 1 - con)
  14.                                 arr[x++][y] = num++;
  15.                                 arr[x][y] = num++;
  16. //从右向左
  17.                         while (y > con)
  18.                                 arr[x][--y] = num++;
  19. //从下向上
  20.                         while (x > 1 + con)
  21.                                 arr[--x][y] = num++;
  22.                                 y++;
  23.                 }
  24. //当n为奇数时,剩最中间一个位置,补上
  25.                 if (n % 2 == 1) {
  26.                         arr[n / 2][n / 2] = num + 1;
  27.                 }
  28. //打印二维数组
  29.                 for (int a = 0; a < n; a++) {
  30.                         for (int b = 0; b < n; b++) {
  31.                                 System.out.print(arr[a] [b]+ "\t");
  32.                         }
  33.                         System.out.println();
  34.                 }

  35.         }
  36. }
复制代码
本来是想参考您的想法试验一下我的思路行不行得通,没想到还改复杂了
回复 使用道具 举报
JarryHorse 发表于 2015-4-1 18:58
本来是想参考您的想法试验一下我的思路行不行得通,没想到还改复杂了

我感觉你这个更好!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马