为什么我的程序会卡在我的 do while 循环中?

Why is my program getting stuck in my do while loop?

我的程序似乎卡在了 do while 循环中。我希望 re-prompt 用户输入非零或非一的数字

如果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));