- public class PrintMatrix {
- /**
- * 以下将等长二维数组中的数字按自然顺序和螺旋样式打印到控制台
- */
- public static void main(String[] args) {
- int n = 4;
- int[][] arr = new int[n][n];
- print2Arr(arr,n);
- }
- //创建打印方法
- public static void print2Arr(int[][] arr,int a){
- //定义水平和垂直方向各2个角标
- int startx = 0,starty = 0,endx = a,endy = a;
- int count= 1;
- //设定循环条件,水平的x<y,垂直打印的x<y
- while(count <= a*a){
-
- for(int i=starty;i<endx;i++)
- //填入最上层一行
- arr[starty][i]=count++;
- starty++;
- for(int i=starty;i<endy;i++)
- //填入最右边
- arr[i][endx-1]=count++;
- endx--;
- for(int i=endx-1;i>=startx;i--)
- //填入最下边
- arr[endy-1][i]=count++;
- endy--;
- for(int i=endy-1;i>=starty;i--)
- //填入最左边
- arr[i][startx]=count++;
- startx++;
- }
-
- for(int x=0;x<arr.length;x++){
- for(int j=0;j<arr[x].length;j++){
- System.out.print(arr[x][j]+"\t");
- }
- System.out.println("\r");
- }
- }
- }
复制代码 上述小程序是否可以改成随意长度的二维数组都打印出这个效果,我暂时改不出来,或者说我写的这个只能是等长,随机长度不支持?。有能改的或另写的都可以。万分感谢。
|