快速提问。我的"While"循环出现问题

Quick questions. I'm having issues with my "While" loop

本文关键字:While 循环 问题 我的      更新时间:2023-10-16

我遇到了一个烦人的问题。我遇到的问题是;当我在第一个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