黑马程序员技术交流社区

标题: 根据输入的数字,打印一个对应螺旋方阵 [打印本页]

作者: 小骆驼    时间: 2015-6-25 19:11
标题: 根据输入的数字,打印一个对应螺旋方阵
本帖最后由 小骆驼 于 2015-6-25 20:52 编辑

/*
例如:
        输出 n=5 的螺旋方阵
        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        

        通过定义一个二维数组来实现
*/
import java.util.*;
class LuoXuanFangZhen
{
        public static void main(String[] args)
        {
                Scanner in=new Scanner(System.in);
                int n=in.nextInt();//键盘录入,根据自己打印的数,来输出一个指定的螺旋方阵
                int s = 0;//由于输出的是一次递增的数所以定义一个变量,++来自增
                int arr[][]= new int[n][n];//把每一行看成一个数组,一共有n个数组,,,注意数组角标是从0开始的,不是从一开始的,不要搞乱了
                for (int x = 0 ;x <n-1 ;x++ )
                {
                        for (int a = x ;a<n-x ;a++ )//当此for循环是将方阵1.2.3.4.5 .   17.18.19.    25存入数组中,存入数组中
                        {
                                arr[x][a] = ++s;//
                        }
                        for (int a =x+1 ; a<n-x ;a++ )//此循环是 将6.7.8.9.     20.21存入数组
                        {
                                arr[a][n-1-x] = ++s;
                        }
                        for (int a = n-x-2; a>=x ;a-- )//此循环是将13 12 11 10.   23 22存入数组
                        {
                                arr[n-x-1][a]= ++s;
                        }
                        for (int a =n-2-x;a>=x+1 ;a-- )//此循环是将14  15  16  24 存入数组
                        {
                                arr[a][x] = ++s;
                        }
                }
                for (int a = 0  ;a<n ;a++ )//此for循环遍历数组,将数组中的对应的数遍历并打印出来.
                {
                        for (int b =0;b<n ;b++ )
                        {
                                System.out.print(arr[a]+ "\t");
                        }
                                System.out.println();
                }
        }
}

作者: 走在这里    时间: 2015-6-25 19:16
我只有开头的思路没有怎么用代码的体现,谢谢你的分享
作者: wenxueaaa555    时间: 2015-6-25 19:19
原来是数组啊,悟了,顿悟
作者: keto    时间: 2015-6-25 19:52
学习了、、、、、
作者: heima591046495    时间: 2015-6-25 19:57
不写注释不是一个好习惯哦...
作者: wx_J25HxI5W    时间: 2015-6-25 20:08
果断收藏
作者: 小骆驼    时间: 2015-6-25 20:54
heima591046495 发表于 2015-6-25 19:57
不写注释不是一个好习惯哦...

我的表达能力不是很好,现在加上了一点注释
作者: 夜空中最亮的星    时间: 2015-6-25 21:02
领悟了,谢谢!
作者: 崔司龙    时间: 2015-6-25 21:19
受教了,.....厉害,,,,,
作者: 1千克=1024克    时间: 2015-6-25 21:21
已经收藏  这东西烦了我好久..
作者: bingyu    时间: 2015-6-25 21:23
学习了,厉害
作者: 张安哲    时间: 2015-6-25 21:29
腻害啊~~~
作者: ym123456    时间: 2015-6-25 21:35
腻害啊~~




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