黑马程序员技术交流社区

标题: 螺旋数组的一点点小问题 [打印本页]

作者: 唐禹龙90    时间: 2015-4-27 22:54
标题: 螺旋数组的一点点小问题
上周星期天弄了一个下午,发现一点小问题头都晕晕乎的了,求大神给点指教。
package in.itcast;

import java.util.Scanner;

/**
* 要求:输入两个正整数,输出相应的螺旋数组
*                
*/
public class ScrewDemo {
        public static void main(String[] args) {
               
                // 无限循环,多次测试,看输出 是否符合要求。
                while (true) {
                       
                        int n = 0;  //  自增的整数
                        //  输入
                        Scanner sc = new Scanner(System.in);
                        System.out.println("输入一个整数:");
                        //  输入数组的 行
                        System.out.println("hang:");
                        int hang = sc.nextInt();
                        // 输入数组的列
                        System.out.println("lie:");
                        int lie = sc.nextInt();

                        // 创建一个数组
                        int[][] arr = new int[hang][lie];
                        int min = 0;
                        // 数级需螺旋的次数
                        min = (hang < lie) ? (hang) : (lie);

                        // 给数级赋值
                        for (int i = 0; i < (min + 1) / 2; i++) {
                                // 从左往右
                                for (int j = i; j < lie - i - 1; j++) {
                                        arr[j] = ++n;

                                }

                                // 从上往下
                                for (int j = i; j < hang - i - 1; j++) {
                                        arr[j][lie - i - 1] = ++n;
                                }

                                // 从左往右
                                for (int j = lie - 1 - i; j >= i; j--) {
                                        arr[hang - 1 - i][j] = ++n;
                                        // System.out.print(n);
                                }

                                // 从下往上
                                for (int j = hang - 2 - i; j >= i + 1; j--) {
                                        arr[j] = ++n;
                                        // System.out.print(n);
                                }
                        }
                        //  遍历数组
                        for (int i = 0; i < hang; i++) {
                                for (int j = 0; j < lie; j++) {
                                        System.out.print(arr[j] + "\t");//
                                }
                                System.out.println();
                        }
                }
        }
}
多次测试会发现一个小问题,输入5,8或者8,5输出结果有几个值 不符合求。
如图


但输入其它 正常。请问有大神知道怎么改后面的两个条件,使的不会出错么。


作者: 东东西西    时间: 2015-4-27 23:20
顶顶顶顶!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2