此功能的目的是要求用户输入要添加到订单的数量。如果它们输入小于0的值,该函数将要求它们重新输入信息,如果输入0则退出该函数。如果值为正整数,则接受用户输入,修改数据成员,并返回true。如果用户输入0,则该函数返回false。问题是,无论用户输入什么,程序都不会退出。 0,小于0的值和有效的正整数都会导致函数循环并要求用户再次输入信息。有人能指出这个函数中的逻辑有什么问题来解释为什么会发生这种情况吗?
bool Order::add(std::istream& is) {
int quantity;
bool start = true;
bool val = false;
while (start = true) {
std::cout << "Enter quantity (0 to quit): ";
is >> quantity;
if (quantity == 0) {
std::cout << "**No delivery recorded!" << std::endl;
start = false;
}
else if (quantity < 0) {
std::cout << "quantity must be a positive integer" << std::endl;
}
else {
copies += quantity;
start = false;
val = true;
}
}
return val;
}
答案 0 :(得分:9)
您始终为“start”变量赋值true: 更改while循环(==):
while (start == true) {