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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 孤守星空 于 2014-9-5 15:51 编辑

写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印
1        2        3        4
12        13        14        5
11        16        15        6
10        9        8        7
这玩意怎么写,自己写的好麻烦兼头疼,感觉想法可能不对

附上自己写的坑爹代码
public class exam09 {        
        public static void main(String[] args){
                show(10);        
        }
        public static void show(int num){
                int number = 1;                //一堆变量,我都过意不去
                Integer[][] juzhen = new Integer[num][num];
                int j=0;
                int i=0;
                int min_i=0;                //原谅我英语实在不行,想不到词儿
                int max_i=num;
                int min_j=0;
                int max_j=num;
                while(number<=num*num){

                                for(j=min_j;j<max_j;j++){
                                        if(juzhen[j]==null)
                                                juzhen[j]=number++;
                                }
                                j--;        
                                min_i++;
                        
                                for(i=min_i;i<max_i;i++){
                                        if(juzhen[j]==null)
                                                juzhen[j]=number++;
                                }
                                i--;
                                max_j--;
                        
                                for(j=max_j;j>=min_j;j--){
                                        if(juzhen[j]==null)
                                                juzhen[j]=number++;
                                }
                                j++;
                                max_i--;
                                
                                for(i=max_i;i>=min_i;i--){
                                        if(juzhen[j]==null)
                                                juzhen[j]=number++;
                                }
                                i++;
                                min_j++;
                                       
                }
                 /*遍历二维数组*/
                for(int x =0;x<num;x++){
                        for(int y=0;y<num;y++){
                                System.out.print(juzhen[x][y]+"\t");
                        }
                        System.out.println();
                }
        }
}

0 个回复

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