首页 > 解决方案 > 在这种情况下,多个 if 和 if-else 有什么区别?

问题描述

该程序应该在 1 处停止循环,但如果有多个 if,它会继续循环。我能够使用 if-else 完成练习,但我无法在此处跟踪和理解多个 if 和 if-else 之间的差异。

我是新来的,所以提前感谢大家的帮助。

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);

    System.out.print("Enter a starting value: ");
    int input = keyboard.nextInt();

    System.out.print(input + ",");
    System.out.print(" ");

    while (input != 1) {
        if (input % 2 == 0) {
            input = input / 2;
            System.out.print(input + ",");
            System.out.print(" ");
        }
        if (input % 2 == 1) { // replace with else
            input = 3 * input + 1;
            System.out.print(input + ",");
            System.out.print(" ");
        }
    }

    keyboard.close();
}

预期:程序应在 1 处停止(检查时)

实际:它继续无限循环:4 2 1 4 2 1 ....

标签: java

解决方案


因为起始值为4,所以第一个 if 语句将其缩减为2。在循环的下一次迭代中,第一个 if 语句将其减少为1,但随后第二个 if 语句发现它是一个奇数,并将其乘以3并加上1

要解决此问题,您的第二个 if 语句需要替换为else,因为只有两种可能的情况:

if (input % 2 == 0) {
    input = input / 2;
} else {
    input = 3 * input + 1;
}

System.out.print(input + ", ");

这样一来,如果执行了第一个 if 语句,则不会执行第二个 if 语句。


推荐阅读