[英]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.