c++ while循环不工作
C++ while loop not working
#include <iostream>
#include <string>
using namespace std;
int main()
{
string option;
cout << "Would like water, beer, or rum?--> ";
cin >> option;
while( option != "water" || option != "beer" || option != "rum" )
{
cout << "You did not choose a valid option. Try again.n";
cout << "Would you like water, beer, or rum?-->";
cin >> option;
}
}
为什么即使用户输入了正确的选项,这段代码也没有退出循环?
大声读出条件- "当option
不是"water"
或 option
不是"beer"
或时运行循环"。
什么时候应该停止?
您使用了错误的逻辑运算符。您希望所有条件都为真(option
不等于水,不等于啤酒,也不等于朗姆酒),因此您应该使用和 (&&
)。或 (||
)表示如果任何条件为真,则表达式为真,并且由于值是互斥的,因此总是如此,因此是无限循环。
这个语句总是为真:
option != "water" || option != "beer" || option != "rum"
如果option
是"水",那么它不是"啤酒",所以这个陈述是正确的。如果option
是"啤酒",那么它不是"水",因此该语句为真(当然,假设您喝的是好啤酒)
我想你是想写
option != "water" && option != "beer" && option != "rum"
这样,只要option
取了这些值中的任何一个,循环就会退出。
希望这对你有帮助!
您的||
s应该是&&
s,因为option
只能有一个值。
while (option != "water" && option != "beer" && option != "rum")
{
// ...
}
几乎总是!= ||
序列是错误的&&应该使用。如果一个比较失败,其他比较为真,因此整个条件总是为真。如果你不比一个人差,那你肯定不比别人差。
有了经验,你会渴望看到这样的结构。
您可以使用容器来存储有效的选项,并检查所选内容是否在容器中:
set<string> validOptions = { "water", "beer", "rum"};
while(validOptions.count(option) == 0) {
// .. etc
}
相关文章:
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 循环仅对第一行正常工作.其他行不受 for 的影响
- 当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
- C++中循环和 C 样式数组的范围工作
- 为什么我的 while 循环对于特定输入中断,而对于其他输入工作正常?
- 为什么循环没有中断,并且 if 条件没有按预期工作?
- 如何使这个 Foor 循环在这个问题中工作?
- 在矩阵逆变器上工作,由于某种原因,我的指数循环不起作用
- 当循环在条件C++之前停止工作时
- C++-循环中的If语句工作不正常
- 如何修复使用execv和forks无法工作的循环
- 如何使用while循环找到GCD?模数运算符是如何工作的
- While循环和if/else语句工作不正常
- 这个代码片段中的while循环是如何工作的
- 我在循环中的循环中遇到问题,无法正常工作
- for 循环中的线程无法正常工作
- 无限而循环不工作C++
- For 循环使用指针遍历数组无法正常工作
- for (x:y) 循环在 C++ 中无法正常工作
- Gnu_radio,工作循环和停止