0

我似乎无法让错误检查在我的 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,循环仍然无法工作......它一次工作,但第二次它只是运行......任何想法

4

3 回答 3

1

首先,为什么要输入两次?你的循环应该照顾到这一点。

其次,如果条件改变你

   if (( isdigit(OnetoFive) && OnetoFive >= 1) && (OnetoFive <= 5))

您必须检查它是否是数字作为您的第一个条件。条件订单很重要!

于 2013-02-11T07:46:04.590 回答
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();
}
于 2013-02-11T07:48:28.743 回答
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 手机上的代码,所以不能保证它可以开箱即用,但它应该给你一个想法。

于 2013-02-11T09:23:43.170 回答