사용자가 올바른 문자로 입력했는지 확인하려고합니다. char가 입력되었다고 가정합니다.부울 루프 및 스위치 문
문제점 : "f"라고 먼저 말하면 carSize가 반환되고 모든 것이 올바르게 작동하고 코드가 올바르게 움직입니다. "d"를 먼저 입력하면 "올바른 값을 입력하지 않았습니다 ..."가 올바르게 표시되지만 "f"와 같은 올바른 값을 다시 입력하면 "계속 올바른 값으로 입력되지 않음 "을 표시하고 다른 응답을 기다립니다. 그 시점 이후에 입력 된 내용이 무엇이든, 답변이 잘못되어있는 것과 같은 메시지가 튀어 나옵니다. 이것은 상당히 간단하고 나의 삶은 내가 잘못하고있는 것이 무엇인지 알아낼 수 없다. 나는 초보자이며, 아마도 함수에서 "크기"를 잘못 사용하고있을 수 있습니까? 어떤 도움을 주시면 감사하겠습니다.
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