我正在为课程制作一个程序,如果你运行它并输入正数,那么作业的目的很明确。但是,我的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];
;
代替<<
在endl
之后,但感谢你解决了我不知道的问题。对不起,第一次没有真正说出问题。
答案 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
}