而循环在假时运行
While loop runs when false
我已经尝试了我能找到的一切来让它工作。我已经对此进行了大量研究,并尝试了我能找到的所有可能的解决方案。我正在使用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 Againn";
cout << "Die 1: ";
cin >> Die1;
cout << "Die 2: ";
cin >> Die2;
}
你的代码:
(Die1+Die2 != '2') ||
(Die1+Die2 != '3') ||
(Die1+Die2 != '5') ||
(Die1+Die2 != '7') ||
(Die1+Die2 != '9') ||
(Die1+Die2 != '11')
将评估为:
A.
( 1+1 != 2 ) = false
( 1+1 != 3 ) = true
break;
B.
( 1+2 != 2 ) = true
break;
C.
( 1+3 != 2 ) = true
break;
...
( 1 + ( x>2 ) != 2 ) = true
你在这里的逻辑本质上是有缺陷的,因为它总是会评估为真。
编辑
正如其他人所指出的那样,您还试图将这些整数与其char
值进行比较,这将不符合您的预期。
'0' = (hex)0x30 = (int)48
'1' = (hex)0x31 = (int)49
'2' = (hex)0x32 = (int)50
...
要解决此问题,您应该与实际数字进行比较:
( Die1 + Die2 != 2 )
您可能需要检查您的 while 状况!
由于条件在否定中,因此您可以使用 AND ( &&) 而不是 OR (||) 来组合它们。
编辑:正如所指出的,你应该将Die1和Die2与数字进行比较。如果要保持字符不变,可以将字符"0"添加到 Die1 和 Die2 的总和中。
这似乎工作正常:
#include <bits/stdc++.h>
using namespace std;
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 Againn";
cout << "Die 1: ";
cin >> Die1;
cout << "Die 2: ";
cin >> Die2;
}
}
相关文章:
- 循环无限运行C++解决骑士之旅问题
- 我的代码运行良好,但在游戏循环中中断
- 如何根据用户在C++中的输入运行不同数量的 for 循环
- 我可以根据用户输入在运行时生成"循环"吗?
- 重新启动后,线程无法在 while 循环中再次运行
- 运行无限循环的最小二叉树问题
- 目标C++,如何在后台线程中使用运行循环?
- 如何在指定的时间内运行循环
- 苹果运行循环的回调方法
- 我怎样才能一直运行循环,直到按下键 (C++)
- 如何在C++中每次运行循环时将变量递增1`
- 如何在第一次运行循环时忽略代码的特定部分
- 如何在每次运行循环时更改for循环中的对象
- 应用程序在访问主运行循环时崩溃 (SIGABRT)
- osX :运行循环选项(创建事件点击时)
- 线程如何运行循环直到连接
- 在指定时间运行c++循环
- 在运行循环外声明、分配和释放线程局部指针变量
- 这是在c++中运行循环的有效方式吗?
- 如何在qt中使用gui对象名运行循环