本帖最后由 高亮亮 于 2013-12-28 13:26 编辑
为什么突然发现是不是我思维模式不契合面对对象思想?怎么觉得看楼主里面各种方法定义,方法嵌套方法,我之前也做了下这个题,感觉就没这么高端的感觉.这个思维是需要改变么?
下面是我的代码.
- package cn.itheima_snakearray;
- /*
- * 需求:
- * 写一个方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式的顺序排列.
- * 思路分析:
- * 1.观察,可知需求的二维数组中元素应该对应所打印每个数据.行,及n为二维数组的长度及其中每个一位int型一维数组的长度.
- * 2.同时,观察得到具体每个int型元素是由行,列边界值完全遍历,再到边界值-1完全遍历...直到填满整个二维数组.
- * 实现步骤:
- * 1.建立一个每个int型一维数组长度为n,二维数组长度也为n的二维数组.
- * 2.遍历赋值.
- * 3.打印.
- */
- public class SnakeArray {
- public static void main(String[] args) {
- printArray(3);
- System.out.println("\n------------分-----割-----线------------\n");
- printArray(7);
- }
-
- public static void printArray(int n)//定义一个按照需求打印二维数组的方法,参数为int型n.
- {
- int[][] arr=new int[n][n];
- int x=1;
- //arr[0][0]
- for(int p=0;p<n/2;p++){
- for (int i = p; i < n-1-p; i++) {//arr[0][0]>>arr[0][n-2]
- arr[p][i]=x++;
- }
- for (int j = p; j < n-1-p;j++) {//arr[0][n-1]>>arr[n-2][n-1]
- arr[j][n-1-p]=x++;
- }
- for(int i=n-1-p;i>p;i--){//arr[n-1][n-1]>>arr[n-1][1]
- arr[n-1-p][i]=x++;
- }
- for(int j=n-1-p;j>p;j--){//arr[n-1][0]>>arr[1][0]
- arr[j][p]=x++;
- }
- //arr[1][0]>>arr[1][1]之后循环上述过程,即可完成偶数n的赋值.
- }
- if (n%2!=0) {//若n为奇数,则需要对忽略位置[n/2][n/2]进行赋值.
- arr[n/2][n/2]=x;
- }
-
- for (int i = 0; i < n; i++) {//打印数组.
- for(int j=0;j<n;j++){
- System.out.print("\t"+arr[i][j]+"\t");
- }
- System.out.println("\n----------------------------------\n" );
- }
- }
- }
复制代码
|