【发布时间】:2022-11-28 15:38:06
【问题描述】:
试图制作一个菜单,但让它只接受整数来选择选项,并在用户输入字母时循环返回。
应用程序接口.cpp
#include <iostream>
#include <windows.h>
#include <iomanip>
#include <string>
#include <cstring>
#include <algorithm>
#include <unistd.h>
#include <stdio.h>
using namespace std;
void AppUI::SearchBook()
{
system("CLS");
TitleHeader();
setTxtColor(10);
PageTitle("Search Book");
cout << "Search books by:" << endl;
cout << "1. Title" << endl;
cout << "2. Author" << endl;
cout << "3. Publication Date" << endl;
cout << "4. Publisher" << endl;
cout << "\n0. Go back to main menu" << endl;
}
编辑本.cpp
#include <iostream>
#include <windows.h>
#include <iomanip>
#include <string>
#include <cstring>
#include <algorithm>
#include <unistd.h>
#include <stdio.h>
using namespace std;
void EditBook::SearchBook()
{
//variable declarations
int Opt;
char searchTxt[255];
SearchStart:
UI.SearchBook();
cout << "\nOption: ";
cin >> Opt;
switch(Opt)
{
case 0:
UI.MainMenu();
break;
case 1:
system("CLS");
cout << "Enter title: ";
cin.getline(searchTxt,sizeof(searchTxt));
SearchByTitle(searchTxt);
break;
case 2:
system("CLS");
cout << "Enter author name: ";
cin.getline(searchTxt,sizeof(searchTxt));
SearchByAuthor(searchTxt);
break;
case 3:
system("CLS");
cout << "Enter publication date: ";
cin.getline(searchTxt,sizeof(searchTxt));
SearchByPubDate(searchTxt);
break;
case 4:
system("CLS");
cout << "Enter publisher: ";
cin.getline(searchTxt,sizeof(searchTxt));
SearchByPublisher(searchTxt);
break;
default:
cout << "Invalid option!";
sleep(1);
goto SearchStart;
break;
}
}
在搜索簿中,当我输入“5”等选项中不可用的数字时,它会循环返回,让我输入正确的选项。但是当我输入一个字母时,例如“a”,它会无限循环,一遍又一遍地显示“无效选项”并且不让我输入新选项。我希望当我输入一个字母时,这是一个无效的选项,它仍然会返回并让我输入正确的字母,这是一个数字/整数。
【问题讨论】:
-
我会声明
char Opt[256];以便我可以接受所有文本输入,但只能继续输入有效数字,否则我会在 while 循环中不断提示输入。 gist.github.com/stephenquan/3f0496294627e907eca5e520e9030d7b
标签: c++ codeblocks