0

我正在为课堂制作一个程序,如果你运行它并输入正数,那么作业的目的就很明确了。但是,看来我的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因为我总是在程序无法打印“数字不能为负...”行时结束程序'不知道我会。很抱歉第一次没有真正说出这个问题。

4

3 回答 3

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; 
}
于 2013-11-13T19:12:38.167 回答
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;
}
于 2013-11-13T19:14:55.693 回答
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
}
于 2013-11-13T22:14:08.637 回答