9、 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。
一开始想的很复杂,想通也就那么回事
- package blog;
- public class ArrayDemo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- test(7);
- }
- public static void test(int a){
- int[][] x=new int[a][a];
- int count=1;
- //
- for(int m=0;m<a>>1;m++){
- //往右初始化
- for(int b=m;b<a-m;b++){
- x[m][b]=count++;
- //往下初始化
- }for(int c=m+1;c<a-1-m;c++){
- x[c][a-1-m]=count++;
- //往左初始化
- }for(int d=a-1-m;d>=m;d--){
- x[a-1-m][d]=count++;
- //往上初始化
- }for(int e=a-2-m;e>m;e--){
- x[e][m]=count++;
- //当a为奇数时,发现最中间的少了,直接补丁补上(上面的代码自己都不敢看了)
- }if(a%2==1){
- int h=a/2;
- x[h][h]=a*a;
- }
-
- }
- //遍历打印该二维数组
- for(int p=0;p<a;p++){
- for(int t=0;t<a;t++){
- System.out.print(x[p][t]+"\t");
- }
- System.out.println();
- }
- }
- }
复制代码
|
|