-1

我检查了几个“可能已经有你答案的问题”,但仍然没有找到任何有效的方法。我的问题是一个简单的while循环,当评估为true时,它会循环并询问用户输入,我输入一个应该将while循环评估为false并退出的数字,但它会重复。我第二次输入号码。我对 C++ 还很陌生,但我假设我的 iostream 中出现了一些问题。

1)我输入“0”,它评估while循环为真,并再次要求用户输入,因为它是< 1。2

)当再次提示我输入1,这显然不是< 1,循环再次重复告诉我“无效的数字 - 数字必须是 bwtween”

3)如果我再次输入 1....while 循环的计算结果为 false 并继续进行,因为它应该在步骤 2 中进行。

代码:

string question = "Enter number of days rented (1-365): ";

int getValidNumber(int num, int lowerNum, int upperNum, string question){

    while((num < 1) || (num > 365)) {

           cout << endl;
           cout << "Invalid number -- the number must be bwtween " <<
                   lowerNum << " and " << upperNum << "." << endl <<
                   "Please try again." << endl;
           cout << question;
           cin >> num;         
           }

    return num;
}
4

1 回答 1

1

再次查看我的代码后,我两次调用了相同的函数。操作员错误。这样就可以了......

cin >> rentalDays;
// Validate user input

getValidNumber(rentalDays, RENTAL_DAYS_MIN, RENTAL_DAYS_MAX, RENTAL_DAYS);
rentalDays = getValidNumber(rentalDays, RENTAL_DAYS_MIN, RENTAL_DAYS_MAX, RENTAL_DAYS);
于 2013-10-17T03:15:14.837 回答