通过比较两个参数打印连续数字

时间:2015-05-12 08:14:22

标签: java for-loop

输入3,5输出应为3,4,5

输入5,3输出应为5,4,3

代码

public static void test(int a, int b) {
        if(a>b) {
            for (int i = a; i >= b; i--) {
                System.out.print(i + "\t");
            }
        }else if(a<b) {
            for (int i = a; i <= b; i++) {
                System.out.print(i + "\t");
            }
        }
    }

它有效,但看起来有点凌乱。没有if else的事情可以吗?只有一个循环。

3 个答案:

答案 0 :(得分:2)

正确处理边界值的一种解决方案可能是

public static void test(int start, int end) {
    int current = start;
    int stepWidth = current <= end ? +1 : -1;
    while (current != (end + stepWidth)) {
        System.out.print(current + "\t");
        current += stepWidth;
    }
    System.out.println("");
}

编辑另一个使用for循环。

public static void test(int start, int end) {
    int stepWidth = start <= end ? 1 : -1;
    for (int current = start; current != end + stepWidth; current += stepWidth) {
        System.out.print(current + "\t");
    }
    System.out.println("");
}

<强>执行

test(3, 5);
test(5, 3);
test(Integer.MAX_VALUE - 3, Integer.MAX_VALUE);
test(Integer.MIN_VALUE, Integer.MIN_VALUE + 3);

<强>输出

3   4   5   
5   4   3   
2147483644  2147483645  2147483646  2147483647  
-2147483648 -2147483647 -2147483646 -2147483645

答案 1 :(得分:1)

这个版本怎么样?

public static void test(int a, int b) {
    int d = b > a ? 1 : -1; 
    for (int i = a; i != b; i+=d) {
        System.out.print(i + "\t");
    }
    System.out.println(b);
}

答案 2 :(得分:0)

我的解决方案,反馈意见。

public static void test(int a, int b) {
            int middle = (a < b) ? (b - 1) : (a - 1);
            System.out.println(a + "," + middle + ","+b);
        }

以上仅适用于!= b。