C++ 无效输入不断弹出?
我不知道这是逻辑错误还是代码错误。我创建了一个菜单,菜单中有一堆if语句,如果用户输入不满足if或elseif语句,则转到else语句。我有这个问题,当我输入字母,这意味着无效,但它不断打印出无效的输入一遍又一遍,它不会回到以前的菜单。如何修复该错误 我已尝试删除系统(“CLS”),但它不起作用C++ 无效输入不断弹出?,c++,C++,我不知道这是逻辑错误还是代码错误。我创建了一个菜单,菜单中有一堆if语句,如果用户输入不满足if或elseif语句,则转到else语句。我有这个问题,当我输入字母,这意味着无效,但它不断打印出无效的输入一遍又一遍,它不会回到以前的菜单。如何修复该错误 我已尝试删除系统(“CLS”),但它不起作用 #include <iostream> #include <cstdlib> using namespace std; int main() { while (tru
#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");
}
}
}
#包括
#包括
使用名称空间std;
int main()
{
while(true)
{
智力选择;
cout如果您输入了无法解析为整数的内容,则该内容将保留在输入缓冲区中。因此,下次尝试读取输入时,它将一遍又一遍地读取完全相同的无效输入
一种可能的解决方案是使用将整行读入std::string
,然后使用例如将字符串转换为整数。这是您理解cin
工作原理的错误。特别是在无效输入时会发生什么。查找好的副本,但很难搜索。您可以使用g开关大小写。你能告诉我怎么做吗?我知道开关大小写,但不知道如何在这种情况下应用。@imagepowersswitch
对非整数输入没有帮助。但除此之外,switch(选项){case1:…break;case2:…break;case3:…break;default:…break;}
。可能重复。这是一种尝试和恢复方法,但我还是喜欢dude建议的方法。一般来说,这是最好的解决方案。如果您试图处理非整数输入,请不要尝试读取整数,然后进行恢复。不要对您的输入做任何假设。