我有一个下面写的代码,如果语句嵌套到另一个语句中,它几乎就是一个代码,因此当运行下面的代码时,如果第一个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");
}
答案 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)
为真时执行。