关于逻辑只是一个小问题。为什么这些等效?

时间:2018-10-14 08:52:44

标签: java if-statement methods return

以为我会再次开始学习编码这么快的问题。原因和方式:

if (n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19) {
            return true;
    }

这:

return n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19;

等效吗?有人想向我解释逻辑吗?

3 个答案:

答案 0 :(得分:1)

在您的第一个版本中,如果表达式为:

(n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19)

true,然后返回true,如果它的false,则什么也不返回。
您的第二个版本返回上述表达式truefalse的值。

因此它们不是等效的。
如果您将第一个版本更改为:

if (n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19) {
    return true;
} else {
    return false;
}

那么它们是等效的。

答案 1 :(得分:0)

如果条件为true,则第一个将返回true,而无论条件如何,第二个将返回结果。

要回答您的问题,它们是等效的,即当条件n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19评估为true时,两种方法都会产生相同的布尔结果。

答案 2 :(得分:0)

看看if语句,

if(condition)

if语句的condition的结果将是布尔值,因为该方法的返回类型也是boolean,因此您可以返回条件的结果,而无需手动进行编码。

现在,您的以下声明被视为condition

(n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19)

它可能返回truefalse。它们都是boolean。因此,您可以直接将其放在return中。


但是,您没有提到如果给定条件失败或返回false会发生什么。在if语句之后,您的代码可能还有其他几行。在这种情况下,它将是不相等的,并且会在之后出现unreachable statement的编译错误,

return n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19;