[英]Unable to exit while loop (as data validation) while testing for string input in homework problem in C++
我正在尝试编写一个简单的程序,查看用户是否符合贷款条件。
我正在尝试进行验证,以确保用户不会输入乱码,而当我输入时,即使不再正确,也不会退出while循环。
while循环不起作用。
#include <iostream>
using namespace std;
int main() {
string employed;
cout << "Are you currently employed?\n";
cin >> employed;
while (employed != "yeah" || employed != "no" || employed != "yes" ||
employed != "Yes") {
cout << "Enter yes or no.";
cin >> employed;
}
// ...
}
当然,您将无法传递while
循环,所有字符串都将满足while条件。 我想你的意思是:
while (employed != "yeah" && employed != "no" && employed != "yes" && employed != "Yes")
即, employed
的不是受控输入。
只需更改||
到&&
你while
条件。
while (employed != "yeah" && employed != "no" && employed != "yes" && employed != "Yes")
{
cout << "Enter yes or no.";
cin >> employed;
}
我将尝试更详细地解释问题所在,让我们先简化一下while条件:
while (employed != "yes" || employed != "no")
这意味着只要内部表达式的计算结果为true,循环就会运行。 假设用户输入"yes"
。 以下是如何将逐步发挥出来,代替employed
它的值"yes"
1) while ("yes" != "yes" || "yes" != "no")
我们可以看到"yes" != "yes"
为false
,所以我们将其填写
2) while (false || "yes" != "no")
现在我们评估or ||
的右侧 操作员。 "yes" != "no"
好,yes等于no,所以这是真的
3) while (false || true)
由于它是逻辑或运算符,因此只要至少一个操作数为true,结果就为true。 我们有一个真和一个假,所以||
运算符结果为true
4) while (true)
因此,您的循环永远不会退出,因为左右至少之一始终为true。 而是使用and运算符&&
,仅当两个运算符均为true时,才为true:
while (employed != "yes" && employed != "no")
只要被雇用不是“是”,我们就可以理解为“继续”,被雇用不是“否”,您可以根据需要添加更多的单词。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.