【发布时间】:2019-04-01 09:02:13
【问题描述】:
不知道是逻辑错误还是代码错误。我创建了一个菜单,在菜单中有一堆 if 语句,如果用户输入不满足 if 或 else if 语句,它会转到 else 语句。我在输入字母时遇到这个问题,这意味着无效,但它会一遍又一遍地打印出无效输入,它不会返回上一个菜单。我该如何解决这个错误?
我曾尝试删除系统(“CLS”),但它不起作用。
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
while (true)
{
int choice;
cout<<"Menu\n\n\n";
cout<<"1. Fruits\n";
cout<<"2. Vegetables\n";
cout<<"3. Exit\n\n";
cout<<"Choice: ";
cin>>choice;
if(choice == 1){
system ("CLS");
system ("PAUSE");
system ("CLS");
}
else if(choice == 2){
system ("CLS");
system ("PAUSE");
system ("CLS");
}
else if(choice == 3){
return 0;
}
else if(choice > 3 || choice < 1 ){
system ("CLS");
cout<<"Invalid Input\n\n";
system ("PAUSE");
system ("CLS");
}
else{
system ("CLS");
cout<<"Invalid Input\n\n";
system ("PAUSE");
}
}
}
它应该只打印出一个无效输入然后返回菜单。
【问题讨论】:
-
您对
cin工作原理的理解有误。特别是在无效输入上会发生什么。正在寻找一个好的副本,但很难找到。 -
您也可以使用 switch case 更好地重写它。
-
你能告诉我怎么做吗?我知道 switch case 但不知道如何在这种情况下应用。
-
@ImaginePowers
switch对非整数输入没有帮助。但除此之外只有switch (choice) { case 1: ... break; case 2: ... break; case 3: ... break; default: ... break; }。 -
可能重复 stackoverflow.com/questions/19696442/…。这是尝试和恢复的方法,不过我仍然更喜欢“老兄”的建议。
标签: c++