A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐禹龙90 中级黑马   /  2015-4-27 22:54  /  427 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

上周星期天弄了一个下午,发现一点小问题头都晕晕乎的了,求大神给点指教。
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输出结果有几个值 不符合求。
如图


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

1 个回复

倒序浏览
顶顶顶顶!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马