[英]Entering specific character into while loop
我正在為班級編寫代碼,要求用戶輸入大小等於或大於7
的奇數。 我已經能夠使我的代碼部分成功工作。 但是,下一部分包括要求用戶輸入特定字母,在這種情況下為'c'
。 如果他們沒有輸入'c'
則循環應要求他們輸入另一個字符。 每當我運行此代碼時,無論我輸入'c'
還是另一個字母,它都會創建一個無限循環。 我認為我的第二個while
循環中的表達式不正確,但是我無法找到很多有關此方面的信息可以幫助我。
#include <iostream>
using namespace std;
int main() {
int s, l;
cout << "Welcome to the letter printer." << endl;
cout << "Enter the size: " << endl;
cin >> s;
while (s < 7 || s%2==0 || s<0)
{
cout << "Invalid size. Enter the size again: " << endl;
cin >> s;
}
cout << "Enter the letter: " << endl;
cin >> l;
while (l != 'c')
{
cout << "Invalid letter. Enter the letter again: " << endl;
cin >> l;
}
return 0;
}
因為您正在為int變量獲取char
錯誤:
int s, l;
正確對象,真愛:
int s;
char l;
為什么它會在一秒鍾內無限循環
無限循環的解釋
這就是basic_istream的工作方式。 在cin >> l輸入錯誤的情況下-設置了故障位並且未清除cin。 所以下一次它將是相同的錯誤輸入。 要正確處理此問題,您可以添加檢查輸入是否正確,並在輸入錯誤的情況下清除並忽略cin。
從這里合並
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.