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

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

输入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的东西可以吗?只有一个循环。

最佳答案

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

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

关于java - 通过比较两个参数来打印连续数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30185301/

10-10 19:47