猿问

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

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

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;

相等的?有人想给我解释一下逻辑吗?


隔江千里
浏览 135回答 3
3回答

慕村225694

在您的第一个版本中,如果表达式:(n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19)在true随后true返回,如果false返回然后什么。您的第二个版本返回上述表达式的值trueor false。所以它们不是等价的。如果您将第一个版本更改为:if (n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19) {&nbsp; &nbsp; return true;} else {&nbsp; &nbsp; return false;}那么它们是等价的。

Qyouu

第一个只会true在条件成立true时返回,而第二个将无论如何都返回结果。为了回答您的问题,它们在某种意义上是等效的,即当条件n1 >= 13 && n1 <= 19 || n2 >= 13 && n2 <= 19 || n3 >= 13 && n3 <= 19评估为时,两种方法都会产生相同的布尔结果true。

天涯尽头无女友

看看if语句,if(condition)conditionif 语句的结果将是一个布尔值,因为该方法的返回类型也是boolean您可以返回条件的结果而不是手动编码。现在您的以下语句被视为condition,(n1&nbsp;>=&nbsp;13&nbsp;&&&nbsp;n1&nbsp;<=&nbsp;19&nbsp;||&nbsp;n2&nbsp;>=&nbsp;13&nbsp;&&&nbsp;n2&nbsp;<=&nbsp;19&nbsp;||&nbsp;n3&nbsp;>=&nbsp;13&nbsp;&&&nbsp;n3&nbsp;<=&nbsp;19)它可能返回true或false。他们两个都是booleans。所以你可以直接用return.但是,您没有提到如果给定条件失败或返回会发生什么false。您的代码可能在 if 语句之后有一些其他行。在这种情况下,它不会是等效的,并且会unreachable statement在之后给出编译错误,return&nbsp;n1&nbsp;>=&nbsp;13&nbsp;&&&nbsp;n1&nbsp;<=&nbsp;19&nbsp;||&nbsp;n2&nbsp;>=&nbsp;13&nbsp;&&&nbsp;n2&nbsp;<=&nbsp;19&nbsp;||&nbsp;n3&nbsp;>=&nbsp;13&nbsp;&&&nbsp;n3&nbsp;<=&nbsp;19;
随时随地看视频慕课网APP

相关分类

Java
我要回答