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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 未来希望 中级黑马   /  2014-1-3 02:07  /  899 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1  2   3   4
12  13 14  5
11  16 15  6
10   9 8   7

2 个回复

倒序浏览
楼主辛苦了。
  1. package com.heima.bbs;
  2. /**
  3. * 从键盘输入一个整数(1~20)
  4. 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
  5. 输入数字2,则程序输出:
  6. 1 2
  7. 4 3
  8. 输入数字3,则程序输出:
  9. 1 2 3
  10. 8 9 4
  11. 7 6 5
  12. 输入数字4, 则程序输出:
  13. 1  2   3   4
  14. 12  13 14  5
  15. 11  16 15  6
  16. 10   9 8   7
  17. */
  18. import java.util.Scanner;


  19. public class Demo7 {

  20.         public static void main(String[] args) {
  21.                 Scanner sc = new Scanner(System.in);
  22.         System.out.println("请输入一个1~20的整数:");
  23.         int n = sc.nextInt();
  24.         while(n<1 || n>20){
  25.                   System.out.println("输入错误,请输入一个1~20的整数:");
  26.                   n = sc.nextInt();
  27.         }
  28.         int up = 0;
  29.         int down = n - 1;
  30.         int left = 0;
  31.         int right = n-1;
  32.         int num = 1;
  33.         int[][] arr = new int[n][n];
  34.         while(down>=up && right>=left){
  35.             for(int i=left;i<=right;i++){
  36.                 arr[up][i] = num;
  37.                 num++;
  38.             }
  39.             up++;
  40.             for(int i=up;i<=down;i++){
  41.                 arr[i][right] = num;
  42.                 num++;
  43.             }
  44.             right--;
  45.             for(int i = right;i>=left;i--){
  46.                 arr[down][i] = num;
  47.                 num++;
  48.             }
  49.             down--;
  50.             for(int i=down;i>=up;i--){
  51.                 arr[i][left] = num;
  52.                 num++;
  53.             }
  54.             left++;
  55.         }
  56.         for(int i=0;i<arr.length;i++){
  57.             for(int j=0;j<arr.length;j++){
  58.                 if(arr[i][j]<10){
  59.                     String s = Integer.toString(arr[i][j]);
  60.                     if(j==(arr.length-1)){
  61.                         System.out.print(s);
  62.                     }else{
  63.                         System.out.print(s+"\t");
  64.                     }
  65.                 }else{
  66.                     if(j==(n-1)){
  67.                         System.out.print(arr[i][j]);
  68.                     }else{
  69.                         System.out.print(arr[i][j]+"\t");
  70.                     }
  71.                 }
  72.                 if(j==n-1){
  73.                     System.out.println();
  74.                 }
  75.             }
  76.         }

  77.         }
  78. }
复制代码
回复 使用道具 举报
楼上正解啊 ,谢谢 大虾{:soso_e163:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马