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

What's wrong with my getNumber() function?

本文关键字:什么 问题 函数 getNumber 我的      更新时间:2023-10-16

我正在为类制作一个程序,如果你运行它并输入正数,作业的目的就很清楚了。但是,我的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之后放了一个;而不是<<,但感谢您解决了一个我不知道我会遇到的问题。很抱歉第一次没有真正说出问题。

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; 
}

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

此外,如果它是一个负数,

但用户输入了第二个负数,会发生什么情况。你需要更多这样的东西:

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