我遇到了一个烦人的问题。我遇到的问题是;当我在第一个cin >> statement
输入 -1 时,while 并没有像我想要的那样退出。
我尽量不要在循环中使用"break"
,因为我被告知这是一个坏习惯。
仅供参考,移动On初始化为真。这是代码:
while(moveOn){
cout << "Enter info:";
cin >> weight;
if(weight == -1){
moveOn = false;
}
weight = pack.weight;
cin >> pack.sides[0] >> pack.sides[1] >> pack.sides[2];
while(pack.weight > 0 || pack.sides[0] < 0 || pack.sides[1] < 0 || pack.sides[2] < 0){
cout << "Enter Vaild info:";
cin >> pack.weight >> pack.sides[0] >> pack.sides[1] >> pack.sides[2];
}
girth = getGirth(pack.sides);
float price;
price = getPackageAmount(pack.weight, weights, prices);
cout << price << endl;
if( pack.weight <= 50){
if(pack.sides[0] <= 36 && pack.sides[1] <= 36 && pack.sides[2] <= 36){
if(girth <= 60){
pack.accepted = true;
accepted++;
}
}
}
else{
pack.accepted = false;
rejected++;
}
}
提前谢谢你。
while(moveOn)
并不意味着"当moveOn
变得false
时立即停止" - 测试仅在循环的每次迭代开始时执行。
您需要添加一个else
子句:
while (moveOn)
{
cout << "Enter info:";
cin >> weight;
if(weight == -1){
moveOn = false;
}
else
{
weight = pack.weight;
// ...
}
}
(您可能还希望将weight = pack.weight
更改为pack.weight = weight
。