本帖最后由 小骆驼 于 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();
}
}
}
|
|