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

tra*_*mot 4 java if-statement conditional-statements

如果您有这样的代码:

if (A > X && B > Y)
{
   Action1();
}
else if(A > X || B > Y)
{
   Action2();
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ada*_*331 13

不,他们不会同时执行.它按照你如何编写它们的顺序排列,逻辑上这是有道理的; 即使第二个读取'else if',你仍然可以将其视为'else'.

考虑一个典型的if/else块:

if(true){
   // Blah
} else{
   // Blah blah
}
Run Code Online (Sandbox Code Playgroud)

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

现实世界的例子可能是分配成绩.你可能会尝试这样的事情:

if(grade > 90){
   // Student gets A
} else if(grade > 80){
   // Student gets B
} else if(grade > 70){
   // Student gets c
}
Run Code Online (Sandbox Code Playgroud)

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

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