条件语句在if-else-if梯子的两个部分都为true

时间:2014-10-24 15:17:44

标签: java if-statement conditional-statements

如果你有这样的代码:

if (A > X && B > Y)
{
   Action1();
}
else if(A > X || B > Y)
{
   Action2();
}

使用A > XB > Y,是否会执行if-else-if阶梯的两个部分?

我正在处理存在此问题的Java代码。我通常在C ++工作,但我是两种语言中非常新的(和零星的)程序员。

4 个答案:

答案 0 :(得分:10)

不,他们都不会执行。它按照你如何写它们的顺序排列,从逻辑上说这是有道理的;即使第二个读取'否则如果',你仍然可以将其视为'否则'。

考虑典型的if / else块:

if(true){
   // Blah
} else{
   // Blah blah
}

如果你的第一个陈述是真的,你甚至不必费心去看看在其他情况下需要做什么,因为它是无关紧要的。同样地,如果您有' if / elseif',您不会浪费时间查看后续块,因为第一个块是真的。

现实世界的例子可能是分配成绩。您可以尝试这样的事情:

if(grade > 90){
   // Student gets A
} else if(grade > 80){
   // Student gets B
} else if(grade > 70){
   // Student gets c
}

如果学生得到99%,所有这些条件都是正确的。但是,您不会指派学生A,B和C.

这就是为什么订单很重要。如果我执行了这个代码,并将B块放在A块之前,你就会为同一个学生分配一个B而不是A,因为A块不会被执行。

答案 1 :(得分:3)

如果A > XB > Y都为真,那么您的代码只会执行Action1。如果其中一个条件为真,则执行Action2。如果没有,那就什么都不做。

使用此:

if (A > X || B > Y) {
   Action2
   if (A > X && B > Y) {
      Action1                                    
   } 
}
A > XB > Y都为真时,

会导致两种情况都发生。

答案 2 :(得分:1)

如果您正在谈论C,那么只有第一个满足条件的块才会被执行 - 在控制之后#34;进入"然后条件块"离开"在所有其他条件之后。

如果你想要这样的行为,那么只需使用两个独立的条件 - 删除"否则"你有它。

答案 3 :(得分:1)

if之后的条件为真时,仅执行第一个块。当条件为假时,else块仅 执行。 else块中的内容并不重要,它没有被执行。 else块是另一个if语句的事实是无关紧要的;它不会被执行,因此它永远不会执行(A > X || B > X)测试,即使该条件为真,也不会执行它的正文。