我只是想知道为什么这不正确:
if ( !name.equals("abc") || !name.equals("cba") )`
这是正确的:
if ((!(name.equals("abc") || name.equals("cba") )))
谢谢你!
答案 0 :(得分:0)
要理解这种差异,用英语读出你的条件陈述总是有帮助的。
if ( !name.equals("abc") || !name.equals("cba") )
转换为
如果名字不等于" abc"或名称不等于" cba",然后......
然而,
if ((!(name.equals("abc") || name.equals("cba") )))
如果(名称等于" abc'或者名称等于" cba")IS FALSE,那么......
或者,通过布尔逻辑,
如果名字不等于" abc" AND名称不等于" cba",然后......
两者肯定不一样。
答案 1 :(得分:0)
考虑!
的工作原理。
选择!(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=f b=f = (!f || !f) = (t || t) = t
a=f b=t = (!f || !t) = (t || f) = t
a=t b=f = (!t || !f) = (f || t) = t
a=t b=t = (!t || !t) = (f || f) = f
现在采用正确的方式分发!
(!a && !b)
a=f b=f = (!f && !f) = (t && t) = t
a=f b=t = (!f && !t) = (t && f) = f
a=t b=f = (!t && !f) = (f && t) = f
a=t b=t = (!t && !t) = (f && f) = f
为了完整起见,请与(!a || !b)
!(a && b)
a=f b=f = !(f && f) = !(f) = t
a=f b=t = !(f && t) = !(f) = t
a=t b=f = !(t && f) = !(f) = t
a=t b=t = !(t && t) = !(t) = f
答案 2 :(得分:0)
答案 3 :(得分:0)