【发布时间】:2017-06-08 09:58:55
【问题描述】:
我已经尽我所能来让它发挥作用。我已经对此进行了大量研究,并尝试了我能找到的所有可能的解决方案。我正在使用 QtCreator 并在 C++ 中进行编码。
int main() {
int Die1, Die2;
cout << "Die 1: ";
cin >> Die1;
cout << "Die 2: ";
cin >> Die2;
while ( (Die1+Die2 != '2')||(Die1+Die2 != '3')||(Die1+Die2 != '5')||(Die1+Die2 != '7')||(Die1+Die2 != '9')||(Die1+Die2 != '11')) {
cout << "You Rolled a " <<Die1<< " and " <<Die2<< " for a Total of " <<Die1 + Die2<<". Please Roll Again\n";
cout << "Die 1: ";
cin >> Die1;
cout << "Die 2: ";
cin >> Die2;
}
【问题讨论】:
-
在什么情况下您认为所有这些条件都是错误的?
-
Die1和Die2是数字,将它们与实际数字进行比较,而不是数字的字符表示。 -
当循环为 false 时运行 -- 你知道那是不可能的。
-
您的
while条件始终为真,因为显然 Die1+Die2 不能同时等于 2 和 3 !所以它必须与其中一个不同,更不用说你的其他测试了...... -
德摩根定律 - 这不仅仅是一个好主意。我喜欢在像这样的布尔表达式上使用它作为健全性检查,看看“else/not”条件是否也有意义,即 X==2 AND X==3 AND X==5 AND ... Doh!
标签: c++ while-loop