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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HwH199209 中级黑马   /  2015-8-9 22:58  /  496 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1       2       3       4       5
16      17      18      19      6
15      24      25      20      7
14      23      22      21      8

13      12      11      10      9

class LuoXuan2{
        public static void main(String[] args){
                int size = 5 ;
                int n = size;
                int [][] arr = new int[size][size];
                int k = 0;
                for (int i = 0;i<n-2 ;i++ ){
                        if(i == n-3){
                                arr[i][i]=25;
                                }
                        for(int j = i;j<n-i-1;j++){
                                arr[i][j]=++k;
                                }
                        for(int j=i ;j<n-i-1;j++){
                                arr[j][n-i-1]=++k;
                                }
                        for(int j=n-i-1;j>i;j--){
                                arr[n-i-1][j]=++k;       
                                }
                        for(int j=n-i-1;j>i;j--){
                                arr[j][i]=++k;       
                                }
                }
       
                for(int i=0;i<size;i++){
                        for(int j=0;j<size;j++){
                                System.out.print(arr[i][j]+"\t");
                        }
                        System.out.println();
                }
        }
}

5 个回复

倒序浏览
由于最后一个数出不来,参考老师的改良。

class LuoXuan{
        public static void main(String[] args){
                int size = 5 ;
                int n = size;
                int [][] arr = new int[size][size];
                int k = 0;
                for (int i = 0;i<n-2 ;i++ ){
                        for(int j = i;j<=n-i-1;j++){
                                arr[i][j]=++k;
                                }
                        for(int j=i+1 ;j<=n-i-1;j++){
                                arr[j][n-i-1]=++k;
                                }
                        for(int j=n-i-2;j>=i;j--){
                                arr[n-i-1][j]=++k;       
                        }
                        for(int j=n-i-2;j>i;j--){
                                arr[j][i]=++k;       
                        }
                }
       
                for(int i=0;i<size;i++){
                        for(int j=0;j<size;j++){
                                System.out.print(arr[i][j]+"\t");
                        }
                        System.out.println();
                }
        }
}
回复 使用道具 举报
有点理解不了
回复 使用道具 举报
好厉害,我做了好久都没搞清楚逻辑。
回复 使用道具 举报
好厉害的大神啊!
回复 使用道具 举报

(我的设计)定义一个二维数组用来存储数据,定义一个int变量,变量是自增的。再看for循环下的第一个循环,输出一行即1、2、3、4。之后再走列5、6、7、8,。。。。。依次类推~~~总结规律~~~把循环写好就好了

(下面改良)只是每次循环的次数不一样,第一行打印1、2、3、4、5。之后那一列6、7、8、9。在之后是10、11、12、13.。。。。。依次类推得到规律。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马