У меня есть меню, в котором пользователю необходимо вводить число от 1 до 5, в любое время, когда пользователь вводит числовое значение, которое он отлично работает, он либо перейдет к указанному случаю, либо в случае неверная цифра, она перейдет к умолчанию и появится сообщение об ошибке.Переключение/остановка без перерыва
Теперь моя проблема в том, что пользователь вводит букву алфавита, программа продолжает цикл и цикл, она не останавливается при каждом переходе по умолчанию.
Я пробовал много вещей! Использование оператора if для проверки того, является ли число 1 < = значение < = 5, не работает. Я пробовал жесткое кодирование в числе, если вход не находится между этими значениями, он все равно петли навсегда. Я пробовал делать cim.good(), не уверен, правильно ли я сделал это, но способ, которым я это сделал, не работает. Я также пытался использовать функцию isdigit(), но та же проблема, она не работает ... Я действительно не знаю, что я должен делать. Вот что я (упрощен).
int menu()
{
int key;
cout << endl << "--------- Main Menu ----------" << endl;
cout << "1: Sort" << endl << "2: Add" << endl;
cout << "3: Search" << endl << "4: History" << endl << "5: Exit" << endl;
cout << "Please pick one: ";
cin >> key;
return(key);
}`
void main()
{
Menu:
key = menu();
switch(key)
{
case 1:
goto Menu;
case 2:
goto Menu;
case 3:
goto Menu;
case 4:
goto Menu;
case 5:
break;
default:
cout << endl << "Invalid entry, please try again" << endl;
goto Menu;
}
}
Я удалил то, что находится внутри корпусов, чтобы оно выглядело лучше. Когда я набираю ключ, я продолжаю получать сообщение «Неверная запись, пожалуйста, попробуйте еще раз», так что это происходит.
EDIT: Хорошо, я прошу прощения за «goto», не знал, что это хмурится, все еще учась! Спасибо всем за помощь. Я обязательно их удалю.
'goto'? в C++? орел? http://stackoverflow.com/questions/3517726/what-is-wrong-with-using-goto – Jack
Избегайте 'goto', если это не упростит понимание. Совет. Это означает, что эксперт может использовать его один раз в десятилетие или такой ... – Deduplicator
«Я пробовал делать cim.good(), не уверен, что я сделал все правильно, но способ, которым я это сделал, не работает». Пожалуйста, постарайтесь дать более подробную информацию о том, что вы сделали в следующий раз, поэтому мы можем попытаться дать вам некоторые конкретные подсказки для ваших ошибок. – LiKao