本帖最后由 李德全 于 2013-4-30 13:46 编辑
看看啥题
做出来啦,嘻嘻- /*
- 需求:顺时针螺旋数字
- 说明: 老师,我刚学了7天毕老师基础视频,
- 不知道怎么获取输入数字,
- 就用主函数main中的String[] args传递。
- 老师您验证的时候请麻烦传递一下。*_*
- 思路:
- 1.螺旋为顺时针,且以4为周期重复。
- 2.螺旋规律为:
- 循环次数 1 2 ...
- Y加 1 3 .
- X加 1 3 .
- Y减 2 4 .
- X减 2 4
- */
- class ShuZhuDemo
- {
- public static void main(String[] args)
- {
- int z = Integer.parseInt(args[0]); //获取输入数字
- System.out.println("输入的数字为:"+z);
-
- int[][] arr = new int[z+2][z+2]; //创建数组
- int mid; //数字1的位置坐标
- if(z%2==0) //偶数
- mid = z/2;
- else //奇数
- mid = (z+1)/2;
- /*开始计算*/
- int up = 1; //X,Y增减的值。规律为:1,1,2,2,3,3,4,4,....
- int con=1; //螺旋位置计数 好比一长方形四条边的位置,1,2,3,4分别代表上边,右边,下边,左边
- for(int x=mid, y=mid, m=1; m<=z*z ; m++ )
- {
- arr[x][y] = m;
- switch(con)
- {
- case 1:
- if(y<mid+up)
- y++;
- else
- {
- con++;
- x++;
- }
- break;
- case 2:
- if(x<mid+up)
- x++;
- else
- {
- y--;
- con++;
- }
- break;
- case 3:
- if(y>mid-up)
- y--;
- else
- {
- x--;
- con++;
- }
- break;
- case 4:
- if(x>mid-up)
- x--;
- else
- {
- con = 1;
- y++;
- up++;
- }
- break;
- default: break;
-
- }
- }
- System.out.println("经过计算得:");
- System.out.println();
- for(int x=0; x<z+2; x++) //打印数组
- {
- for(int y=0; y<z+2; y++)
- if(arr[x][y]==0)
- System.out.print("*\t"); //数组0元素替换为*
- else
- System.out.print(arr[x][y]+"\t");
- System.out.println();
- System.out.println();
- }
- }
- }
复制代码 请老师指导! |