Java不等于或
我只是想知道为什么这是不正确的:Java不等于或,java,Java,我只是想知道为什么这是不正确的: if ( !name.equals("abc") || !name.equals("cba") )` if ((!(name.equals("abc") || name.equals("cba") ))) 这是正确的: if ( !name.equals("abc") || !name.equals("cba") )` if ((!(name.equals("abc") || name.equals("cba") ))) 谢谢大家! 为了理解差异,用英语
if ( !name.equals("abc") || !name.equals("cba") )`
if ((!(name.equals("abc") || name.equals("cba") )))
这是正确的:
if ( !name.equals("abc") || !name.equals("cba") )`
if ((!(name.equals("abc") || name.equals("cba") )))
谢谢大家! 为了理解差异,用英语读出你的条件声明总是有帮助的
if ( !name.equals("abc") || !name.equals("cba") )
转化为
如果名称不等于“abc”或名称不等于“cba”,则
鉴于
if ((!(name.equals("abc") || name.equals("cba") )))
如果(名称等于“abc”或名称等于“cba”)为FALSE,则
或者,用布尔逻辑
如果名称不等于“abc”且名称不等于“cba”,则
这两者肯定不一样。想想
!
是如何工作的
采取!(a | | b)
什么是真值表:
a=f b=f = !(f || f) = !(f) = t
a=f b=t = !(f || t) = !(t) = f
a=t b=f = !(t || f) = !(t) = f
a=t b=t = !(t || t) = !(t) = f
现在以(!a||!b)
现在采取正确的方式分发!
(!a&&!b)
为了完整起见,采用与(!a | |!b)
!(a&b)
第一个代码有这个真值表 第二个代码有这个真值表
实际上这是一道数学题。这是相同的逻辑方程式:
!x || !y == !(x && y)
!x && !y == !x || !y
您可以阅读更多关于逻辑运算的内容它们的含义并不相同。我建议您以名称为例,思考表达式的每个部分的计算结果。第一个条件将始终返回true,因为两个操作数相互矛盾。这是基本逻辑。如果名称不等于A或不等于B-它不能同时等于两者,所以总是正确的。-名称的反面是A或B“-显然是一个更合理的条件。你认为这个真值表正确吗?你能给我一个第一个条件有假值的例子吗?它是错的。我使用的在线软件工作不正常。现在我已经改正了。谢谢@SanketMakaniStill如果你仔细观察情况,这两种情况只有三种可能
a
和b
不能同时为真。
!x || !y == !(x && y)
!x && !y == !x || !y