问题描述
我的程序似乎卡在了 do while 循环中。如果用户输入的数字不是零或一,我希望它重新提示用户
解决方法
如果x == 0
怎么办? x != 1
为真,整个条件为真。
如果x == 1
怎么办? x != 0
为真,整个条件为真。
如果x == 2
怎么办? x != 0
为真,整个条件为真。
所以,无论如何,你的条件都为真,你将继续循环。
您希望以下内容为真:
(x == 0 || x == 1) && (y == 0 || y == 1)
所以你想在它为假时循环。
do { } while (!((x == 0 || x == 1) && (y == 0 || y == 1)));
!(P && Q)
等价于 !P || !Q
,并且!(P || Q)
等价于 !P && !Q
这意味着以下内容与上述内容相同:
do { } while (!(x == 0 || x == 1) || !(y == 0 || y == 1));
do { } while ((x != 0 && x != 1) || (y != 0 && y != 1));