我想驗證用戶輸入了正確的字符。我假設已經輸入了一個字符。布爾循環和switch語句
問題:當我第一次輸入「f」時,返回carSize並且一切正常,代碼正常移動。如果我先輸入「d」,「沒有輸入正確的值......」,則顯示正確,但當再次輸入正確的值(如「f」)時,它會一直重複「You have沒有輸入正確的值「並等待另一個響應。在那之後,無論輸入什麼內容,它都會吐出後面的消息,就好像答案不正確一樣。這很簡單,我不能爲我的生活弄清楚我做錯了什麼。我是初學者,所以也許我在函數中錯誤地使用了「大小」?任何幫助將不勝感激。
這裏是我的代碼:
const string RENTAL_DAYS = "Enter number of days rented: ";
cout << RENTAL_DAYS;
cin >> rentalDays;
rentalDays = correctNumberCheck(rentalDays, RENTAL_DAYS);
char rentalSizeCheck(char size, string question) {
bool notValid = true;
size = toupper(size);
while(notValid) {
switch (size) {
case 'C':
notValid = false;
break;
case 'M':
notValid = false;
break;
case 'F':
notValid = false;
break;
case 'S':
notValid = false;
break;
default:
cout << "You have not entered in a correct value "
<< ", please try again" << endl;
cout << question;
cin >> size;
}// Close switch
} // Close while loop
return carSize;
}
+1,這是一個很好的觀點,但第一個'f'是如何被大寫的? – cpp
你的權利。謝謝您的幫助。我將使用dowhile循環,以便它總是首先調用toupper。萬分感謝。 – Ducksauce88