猿问

Java中的布尔逻辑表达式

有好心人可以解释一下原因吗

! (x < 0 && y < 0)

不等于以下两个表达式

!(x < 0) && ! (y < 0)       AND       x > 0 && y > 0

在第一个代码中是不是意味着x不小于0并且y不小于0?这是否也意味着 x 和 y 应该大于 0?任何帮助深表感谢!


忽然笑
浏览 129回答 3
3回答

炎炎设计

在您的两个重写版本中,您需要 OR ( ||) 而不是 AND ( &&)。每当您反转 AND 条件的组成部分时都是如此。! (x < 0 && y < 0)是true如果x是>= 0并且y是< 0。要以其他形式获得相同的结果,您需要x >= 0 || y >= 0. (请注意,它>=不仅仅是>,但要点是||而不是&&。)

绝地无双

让我们计算一下等效表达式! (x < 0 && y < 0)请注意,如果否定出现在 && 之前,则它会变为 ||&nbsp;反之亦然。所以你的表达式将等于:! (x < 0 && y < 0) ---> &nbsp; !(x<0) || !(y<0) &nbsp; ---> &nbsp; x>=0 || y>=0如下图所示,彩色区域就是你的表达式的结果:

大话西游666

在第一个示例中,括号中的两个表达式(“(x < 0)”和“(y < 0)”)必须等于“true”,整个表达式才会变为“false”。在第二个示例中,前两个表达式包含第一个示例的括号内的每个表达式(“(x < 0)”和“(y < 0)”)。因此,只有这些表达式之一为“true”,才会导致整个表达式变为“false”,因为所有内容都通过 AND 运算符连接。您可以设置 x=0 和 y=-1 并手动尝试。
随时随地看视频慕课网APP

相关分类

Java
我要回答