我需要对 Java while 循环进行一些说明

I need some clarification on Java while loop

为什么这段代码可以退出while循环

while (!(!(x < 5) || !(y < 5)))

但这并不

while ((x < 5) || (y < 5))

两个表达式不等价,

!(!A||!B) = A && B

检查德摩根定律

http://www.allaboutcircuits.com/textbook/digital/chpt-7/demorgans-theorems/

分解:

(!(!(x < 5) || !(y < 5)))

!(x < 5)等价于x >= 5y也类似,所以以上等价于

!(x >= 5 || y >= 5)

如果 xy 为 5 或更大,则括号中的表达式为 true。因此,对于表达式 false xy 必须小于 5——因为如果其中一个大于或等于 5,括号内的表达式将为 true! 表示如果括号内的部分为 false,则整个表达式为 true。因此,只有当xy都小于5时,表达式才为true,即等价于

x < 5 && y < 5

这是德摩根定律的应用,但您无需记住或理解该定律即可了解其工作原理。您真正需要做的就是仔细考虑表达式并弄清楚表达式在什么条件下为真或为假。 (如果你有一个包含很多变量的更复杂的表达式,德摩根定律可能会有用。但在那种情况下,最好只是分解表达式并引入一些中间 boolean 变量;否则你不会能够理解你写的东西,其他人也不会。)