首页 > 解决方案 > 只是一个关于逻辑的小问题。为什么这些是等价的?

问题描述

以为我会再次开始学习编码这么快的问题。这是为什么以及如何:

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;

相等的?有人想向我解释其中的逻辑吗?

标签: javaif-statementmethodsreturnboolean-logic

解决方案


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

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

istrue然后true返回,如果它false则不返回任何内容。
您的第二个版本返回上述表达式的值truefalse.

所以它们不是等价的。
如果您将第一个版本更改为:

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

那么它们是等价的。


推荐阅读