黑马程序员技术交流社区

标题: java多线程 [打印本页]

作者: 罗忠文    时间: 2012-11-28 11:39
标题: java多线程
写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:                                
1
2
3
4
12
13
14
5
11
16
15
6
10
9
8
7

作者: 坚持远方    时间: 2012-11-28 12:40
public class Rotating {
         /**
          * @param args
          */
         public static void main(String[] args) {
          // TODO Auto-generated method stub
          Rotating x=new Rotating(6);
          x.output();

         
         }
         int width=4;//只能是偶数
         Integer[][] Zone;
         Rotating(int p){
          this.width=p%2==1?p-1:p;
          this.Zone=new Integer[this.width][this.width];
          this.init(0, 1);  
         }

         
         private void init(int roll,int start){
          int wid=this.width-2*roll;
          System.out.println("kaishi start="+start+" wid="+wid);
          if(wid==0)return;
          for(int i=0;i<wid-1;i++){
           this.Zone[roll][i+roll]=start;
           System.out.println("start="+start);
           start++;
          }
          for(int i=0;i<wid-1;i++){
           this.Zone[i+roll][this.width-1-roll]=start;
           System.out.println("start="+start);
           start++;
          }
          for(int i=0;i<wid-1;i++){
           this.Zone[this.width-1-roll][this.width-1-roll-i]=start;
           System.out.println("start="+start);
           start++;
          }
          for(int i=0;i<wid-1;i++){
           this.Zone[this.width-1-roll-i][roll]=start;
           System.out.println("start="+start);
           start++;
          }
          init(++roll,start);  
         }
         void output(){
          for(int i=0;i<this.width;i++){
           for(int j=0;j<this.width;j++){
            System.out.print("   "+this.Zone[i][j]);
           }
           System.out.println();
          }
         }
        }

这是帮你找的代码,你可以看一下,不过结果就是如你写的那样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2