我似乎无法让错误检查适用于我的GetInput阶段。我试图让那个阶段重复,直到数字1 -5被放在那里而没有别的。谢谢!
void GetInput(void)
{
cout << "Please enter a number between 1 and 5: \n";
cin >> OnetoFive;
if (isdigit(OnetoFive) && (OnetoFive <= 5) && (OnetoFive >= 1))
{
return;
}
else
{
system("cls");
cin.clear();
cin.ignore(INT_MAX, '\n');
cout << "\n\nInvalid. Please enter a number between 1 and 5: ";
cin >> OnetoFive;
}
}
好吧,现在它适用于字母字符,但是如果我的值超过5,那么循环仍然无法工作......它可以工作一次,但第二次它只是运行....任何想法
答案 0 :(得分:1)
首先,为什么要求输入两次?你的循环应该照顾它。
如果条件为
,则先改变你 if (( isdigit(OnetoFive) && OnetoFive >= 1) && (OnetoFive <= 5))
你必须检查它是否是一个数字作为你的第一个条件。条件订单计数!
答案 1 :(得分:0)
你试过替换:
else
{
cin.clear();
cout << "\n\nInvalid. Please enter a number between 1 and 5: ";
cin >> OnetoFive;
if ((OnetoFive >= 1) && (OnetoFive <= 5) && isdigit(OnetoFive))
{
system("cls");
return;
}
}
带
else
{
GetInput();
}
答案 2 :(得分:0)
C ++不是我强有力的一面,但为了让您了解适合您需求的循环如何:
bool GetInput()
{
cout << "Please enter a number between 1 and 5: \n";
cin >> OnetoFive;
if(isdigit(OnetoFive) && (OnetoFive <= 5) && (OnetoFive >= 1))
{
return true;
}
else
{
system("cls");
cin.clear();
cin.ignore(INT_MAX, '\n');
cout << "\n\nInvalid. Please enter a number between 1 and 5: ";
}
return false;
}
while(!GetInput())
{
GetInput();
}
我的Android手机上写的代码所以无法保证它能够开箱即用,但它可以给你一个想法。