我很难弄清楚如何在输入“NOMORE”一词后立即结束我的程序。
我研究过类似的线程,建议使用 “if, break” 或 “if, go to”。
虽然程序会在输入“NOMORE”后结束,但我想知道是否可以在不处理剩余模块(calcTicket、printInfo)的情况下结束。
int main ()
{
string licensePlate;
double vehicleSpeed = 0, zoneSpeed = 0, ticketPrice, base = 0, fee = 0;
while (licensePlate !="NOMORE")
{
getInfo(licensePlate, vehicleSpeed, zoneSpeed);
if (licensePlate == "NOMORE")
break;
calcTicket(vehicleSpeed, zoneSpeed, ticketPrice, base, fee);
printInfo(licensePlate, vehicleSpeed, zoneSpeed, ticketPrice);
}
return 0;
}
最佳答案
我假设,在询问是否“可能结束”时,您指的是终止循环,而不是程序。
如果您不能更改 getInfo()
,我会将结构构造为 do-while
而不是 while
。
do
{
getInfo(licensePlate, vehicleSpeed, zoneSpeed);
if (licensePlate == "NOMORE") break;
calcTicket(vehicleSpeed, zoneSpeed, ticketPrice, base, fee);
printInfo(licensePlate, vehicleSpeed, zoneSpeed, ticketPrice);
} while (true);
前提是getInfo()
至少需要调用一次,如果输入"NOMORE"
则要求后续处理不会发生,否则循环永远持续下去。
如果您可以将 getInfo()
更改为返回 bool
,则可以...
while (getInfo(licensePlate, vehicleSpeed, zoneSpeed))
{
calcTicket(vehicleSpeed, zoneSpeed, ticketPrice, base, fee);
printInfo(licensePlate, vehicleSpeed, zoneSpeed, ticketPrice);
}
假设 getInfo()
在看到 "NOMORE"
时返回 false
,并且它适本地处理 vehicleSpeed
和 zoneSpeed
无关。一个优点是,如果满足结束条件,getInfo()
实际上不需要读取这些值。显然 getInfo()
中会有一个测试,但调用者不需要关心它是如何完成的。
关于c++ - 你如何结束 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40210762/