黑马程序员技术交流社区
标题:
根据输入的数字,打印一个对应螺旋方阵
[打印本页]
作者:
小骆驼
时间:
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