嵌套If语句

时间:2016-04-12 15:53:28

标签: java if-statement nested

我有一个下面写的代码,如果语句嵌套到另一个语句中,它几乎就是一个代码,因此当运行下面的代码时,如果第一个if语句不正确,嵌套的if语句也不会运行。

我知道这意味着你无法使第二个if语句成立,但我的问题很简单:

第二个if语句是否为true但由于第一个if语句为false而忽略,或者第二个if语句是否为false?

我的问题的代码如下:

int temperature;
myWindow.clearOut();
temperature = Integer.parseInt(myWindow.readIn());
if (temperature >= 18) {
    myWindow.writeOutLine(temperature + " is greater than or equal to 18");
    if (temperature % 2 == 0)
        myWindow.writeOutLine(temperature + " is an even number");

}

5 个答案:

答案 0 :(得分:2)

您不知道第二个if语句是否会计算为 true false ,因为如果第一个if语句的计算结果为,它将不会被执行假

这就是现代编程语言的工作原理 - 应该执行的代码被添加到一堆命令中。如果第一个语句的计算结果为 false ,则if的正文中的任何内容都不会添加到堆栈中。

答案 1 :(得分:0)

嵌套的if语句既不是true也不是false,因为它永远不会被评估和完全忽略。 (感谢Ori和Berger)。

答案 2 :(得分:0)

有三种替代方法可以做到这一点 - 你必须自己决定。

/**
 * Warning on temp >= 18.
 * Warning on temp >= 18 && temp is even.
 */
public void test1() {
    if (temperature >= 18) {
        myWindow.writeOutLine(temperature + " is greater than or equal     to 18");
        if (temperature % 2 == 0) {
            myWindow.writeOutLine(temperature + " is an even number");
        }
    }
}

/**
 * Warning on temp >= 18.
 * Warning on temp is even.
 */
public void test2() {
    if (temperature >= 18) {
        myWindow.writeOutLine(temperature + " is greater than or equal     to 18");
    }
    if (temperature % 2 == 0) {
        myWindow.writeOutLine(temperature + " is an even number");
    }

}

/**
 * Warning on temp >= 18.
 * Warning on temp < 18 && temp is even.
 */
public void test3() {
    if (temperature >= 18) {
        myWindow.writeOutLine(temperature + " is greater than or equal     to 18");
    } else if (temperature % 2 == 0) {
        myWindow.writeOutLine(temperature + " is an even number");
    }
}

答案 3 :(得分:0)

第二如果条件实际上是第一个条件,那么你永远不会知道温度是否均匀,直到它大于18 ...

这样的级联条件可能会在应用程序中找到错误...

我建议重新排序条件

答案 4 :(得分:0)

第二个if语句if (temperature % 2 == 0)可能是也可能不是,但仅在第一个if语句if (temperature >= 18)为真时执行。