首页 > 解决方案 > 为什么我的程序卡在我的 do while 循环中?

问题描述

在此处输入图像描述 在此处输入图像描述

我的程序似乎陷入了 do while 循环。如果用户输入的数字不是零或一,我希望它重新提示用户

标签: csyntaxdo-whileprompt

解决方案


万一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));

推荐阅读