以为我会再次开始学习编码这么快的问题。原因和方式:
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;
等效吗?有人想向我解释逻辑吗?
答案 0 :(得分:1)
在您的第一个版本中,如果表达式为:
(n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19)
是true
,然后返回true
,如果它的false
,则什么也不返回。
您的第二个版本返回上述表达式true
或false
的值。
因此它们不是等效的。
如果您将第一个版本更改为:
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)
它可能返回true
或false
。它们都是boolean
。因此,您可以直接将其放在return
中。
但是,您没有提到如果给定条件失败或返回false
会发生什么。在if语句之后,您的代码可能还有其他几行。在这种情况下,它将是不相等的,并且会在之后出现unreachable statement
的编译错误,
return n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19;