我还在看面向对象的视频,掌握的知识还不多。。
我的思路是新建一个5×5二维数组,初始化为螺旋方阵,然后遍历打印输出。
运行ok,经测试可以输出任意n×n的螺旋方阵。- public class A4_3{
- public static void main(String[] args){
- int [][] arr = new int [5][5] ;
- setArr(arr);
- printArr(arr);
- }
- //定义一个函数来初始化数组成螺旋方阵
- static void setArr(int[][] arr)
- {
- //用x和y来记录数组的下标
- int x=0;
- int y=-1;
- int num = arr.length;
- //用count来记录每次要往数组中赋值的数
- int count = 1;
- //可以把赋值过程看成n个逆时针循环,5×5方阵则n为5
- for(int length=num;length>1;length--)
- {
- //每个循环四个步骤,下标从左到右
- while(y<length-1)
- arr[x][++y]=count++;
- //下标从上到下
- while(x<length-1)
- arr[++x][y]=count++;
- //下标从右到左
- while(y>num-length)
- arr[x][--y]=count++;
- //下标从下到上
- while(x>num-length+1)
- arr[--x][y]=count++;
- }
- }
- //打印数组函数
- static void printArr(int [][] arr)
- {
- for(int i=0;i<arr.length;i++)
- {
- for(int j=0;j<arr.length;j++)
- {
- System.out.print(arr[i][j]+"\t");
- }
- System.out.println();
- }
- }
- }
复制代码
|