0

我是 C++ 中的业余练习代码,我无法让我的代码正常工作。我希望有人能找到我的问题或指出我正确的方向。

我只是想创建一个开关/案例菜单供用户选择。我希望他们不能输入任何不正确的值作为输入。唯一正确的值是 1、2、3 或 4。如果输入了任何更低、更大或非数字的值,我希望它们陷入循环,直到它们输入正确的值。

我的工作错误检查问题是,当他们实际输入正确的值时,他们仍然卡在循环中?!我曾尝试重新排列我的代码,但随后该错误再次炸毁了我的程序。

感谢您的任何建议、代码输入等。我不知道为什么它不起作用!!!

并在相关说明中。我在让我的 jgrasp 下载为 c++ 正常工作时遇到问题,所以我下载了一个名为 code::block 的编译器。由于某种原因,它无法注册 system("") 命令?!任何想法或更好的编译器将不胜感激。谢谢。哦,这是我第一个问题的代码......在代码之后是我的开关/案例菜单开始的地方。感谢您的任何帮助

int main()
{
string name;
int ans2, ans3, count = 0, extra, select = 1, arraycount = 0, choice;
bool flag = true;
cout << "Hello World" << endl;
cout << "Enter your name: ";
cin >> name;
cout << "Thank you for using this program " + name << endl;
while (select != 4)
{
cout << "MAIN MENU\n";
cout << "Please enter a corrisponding numeric for your selection.\n";
cout << "1. You are Michael...\n";
cout << "2. You are Tim\n";
cout << "3. You are someone else\n";
cout << "4. Program exit\n";
cout << "Enter your selection: ";
cin >> select;

do
{
while(!(cin >> select))
    {
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout << "Invalid input.  Try again: ";
}
cout << "You entered: " << select << endl;

if (select != 1 && select != 2 && select != 3 && select != 4)
{
    flag = false;
    cout << "Error. Please enter a valid selection.";
    cout << "Enter your selection";
    cin >> select;
}
else
    flag = true;


}while(flag == false);

cout << "\n\nThank you for your choice\n";
//system("pause");
//system("cls");
4

1 回答 1

0

这部分代码,

if (select != 1 && select != 2 && select != 3 && select != 4)
{
    flag = false;
    cout << "Error. Please enter a valid selection.";
    cout << "Enter your selection";
    cin >> select;
}

这部分可能是您在此处再次输入选择时出现问题的原因,但您没有修改标志值。您可以将支票添加while(!(cin >> select))

 while(!(cin >> select) || select > 4 || select < 1)
于 2013-10-07T22:31:24.980 回答