簡體   English   中英

在while循環中輸入特定字符

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM