else if和if之间的区别(Java)

时间:2013-09-29 15:56:57

标签: java if-statement greenfoot

我想知道这两个代码之间是否有任何区别:

代码1:

if(isSleepy()){
    sleep(1);
} else if (isBored()){
    dance();
    dance();
} else {
    walkRight(50);
    walkLeft(50);
    if(isHungry()){
        eat();
    }
}

代码2:

if(isSleepy()){
    sleep(1);
}
if (isBored()){
    dance();
    dance();
}
walkRight(50);
walkLeft(50);
if(isHungry()){
    eat();
}

我已将if-elseif-if链替换为if。这会影响病情过程吗?

3 个答案:

答案 0 :(得分:3)

  

这是否会影响病情过程?

是的,确实如此。在第一种情况下,如果isBored()返回true,则永远不会调用isSleepy(),也不会检查其结果。在第二种情况下,检查,它是完全独立的。同样,如果walkRight返回true,则不会在第一个块中调用walkLeftisSleepy(),但位于第二个块中。

重新格式化第一个代码块有助于使事情更加清晰;

if(isSleepy()){
    sleep(1);
} else {
    // The below only happens if isSleepy() returned false
    if (isBored()){
        dance();
        dance();
    } else {
        // These only happen if isSleepy() returned false AND isBored() returned false
        walkRight(50);
        walkLeft(50);
        if(isHungry()){
            eat();
        }
    }
}

答案 1 :(得分:0)

仅在前面else if条件失败的情况下才会检查

if。如果preceeding if语句发生了什么,将会执行并评估一个接一个的简单。

要理解简单翻译if-else含义

答案 2 :(得分:0)

在第一种情况下,如果else条件为else if,则永远不会检查true阻止,如果if条件为真,则永远不会检查该条件。

在第二种情况下,检查两个if条件并且第三个块不在任何条件内,它总是被执行。

  

这是否会影响病情过程?

在第一个代码中,条件是互斥的,但在第二个代码中,两个条件可能同时为真。