上周星期天弄了一个下午,发现一点小问题头都晕晕乎的了,求大神给点指教。
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输出结果有几个值 不符合求。
如图
但输入其它 正常。请问有大神知道怎么改后面的两个条件,使的不会出错么。
|
|