我的getNumber()函数出了什么问题?

时间:2013-11-13 19:11:01

标签: c++ function validation

我正在为课程制作一个程序,如果你运行它并输入正数,那么作业的目的很明确。但是,我的int getNumber();功能似乎无法正常工作。该函数的目的是收集一个正数并返回它。 这是代码:

    int getNumber()
{
    int number;
    cin >> number;
    if (number < 0)
    {
        cout << endl; "Number cannot be negative: Please enter a nonnegative value: ";
        cin >> number;
    }
    else 
        return (number); 
}

如果您需要该程序的其余部分,请告诉我。我将其称为i = getNumber(); movies = new int[i];

编辑:对不起,我忘了提到问题是它不会打印出cout行,但会正确结束行。在发布之后我立刻记得if-else是一个条件子句而不是一个循环并且切换它但仍然有同样的问题。我没有意识到它仍然会接受一个负数,因为一旦它无法打印“数字不能为负数”这一行,我总是结束该程序。我把;代替<<endl之后,但感谢你解决了我不知道的问题。对不起,第一次没有真正说出问题。

3 个答案:

答案 0 :(得分:3)

只有if条件的一个分支返回一个值。如果输入的第一个数字为负数,则该函数不会返回任何内容。

你的编译器应该警告过这个。

您可能希望将if替换为重复执行的while循环,直到输入可接受的数字为止:

int getNumber()
{
    int number;
    cin >> number;
    while (number < 0)
    {
        cout << endl; "Number cannot be negative: Please enter a nonnegative value: ";
        cin >> number;
    }
    return number; 
}

答案 1 :(得分:1)

您的代码仅在数字不为负数时返回值。我假设这是一个编译器错误。

此外,如果它是负数但用户输入第二个负数会发生什么。你需要更像这样的东西:

int getNumber()
{
    int number;

    cin >> number;
    while (number < 0)
    {
        cout << endl; "Number cannot be negative: Please enter a nonnegative value: ";
        cin >> number;
    }
    return number;
}

答案 2 :(得分:0)

    int getNumber()
{
    int number;
    cin >> number;
    while(number<0) // A while loop will allow you to continually input numbers if the value is negative
    {
        cout << endl; "Number cannot be negative: Please enter a nonnegative value: ";
        cin >> number;
    }

        return number; // you don't need parenthesis before and after number
}