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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© binghaiwang 中级黑马   /  2013-9-2 10:04  /  1010 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class PrintMatrix {

  2.         /**
  3.          * 以下将等长二维数组中的数字按自然顺序和螺旋样式打印到控制台                     
  4.          */
  5.         public static void main(String[] args) {
  6.                 int n = 4;
  7.                 int[][] arr = new int[n][n];
  8.                 print2Arr(arr,n);
  9.         }
  10.         //创建打印方法
  11.         public static void print2Arr(int[][] arr,int a){
  12.                 //定义水平和垂直方向各2个角标
  13.                 int startx = 0,starty = 0,endx = a,endy = a;
  14.                 int count= 1;
  15.                 //设定循环条件,水平的x<y,垂直打印的x<y
  16.                 while(count <= a*a){
  17.                        
  18.                         for(int i=starty;i<endx;i++)       
  19.                                 //填入最上层一行
  20.                                 arr[starty][i]=count++;
  21.                         starty++;
  22.                         for(int i=starty;i<endy;i++)                       
  23.                                 //填入最右边
  24.                                 arr[i][endx-1]=count++;
  25.                         endx--;
  26.                         for(int i=endx-1;i>=startx;i--)
  27.                                 //填入最下边
  28.                                 arr[endy-1][i]=count++;
  29.                         endy--;
  30.                         for(int i=endy-1;i>=starty;i--)
  31.                                 //填入最左边
  32.                                 arr[i][startx]=count++;
  33.                         startx++;
  34.                 }
  35.                
  36.                 for(int x=0;x<arr.length;x++){
  37.                         for(int j=0;j<arr[x].length;j++){
  38.                                 System.out.print(arr[x][j]+"\t");
  39.                         }
  40.                         System.out.println("\r");
  41.                 }
  42.         }       
  43. }
复制代码
上述小程序是否可以改成随意长度的二维数组都打印出这个效果,我暂时改不出来,或者说我写的这个只能是等长,随机长度不支持?。有能改的或另写的都可以。万分感谢。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马