当我输入0到70之间的数字时,它会无限打印

时间:2019-05-20 07:35:19

标签: c++

当我输入0到70之间的值时,它会无限打印(这是错误的),但是当输入的数字不在0到70之间时,它会提示用户输入一个应该在0到70之间的数字。(正确)

Command:
electron-packager . electron-tutorial-app --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName="Electron Tutorial App"

我输入0到70之间的值时,结果应该只打印一次。

2 个答案:

答案 0 :(得分:4)

您应该重新考虑while循环中的内容。您是否真的要在那里输出?您可能只希望循环获取输入,直到它有效为止。相反,应将输出移出循环:

int main() {
    int hourswork = -1;
    int RATE = 123;
    while (hourswork < 0 || hourswork > 70)
    {
        cout << "Please enter a value between 0 to 70: ";
        cin >> hourswork;
    }

    int wages = RATE * hourswork;
    cout << "The wage is: " << wages << endl;
}

通过这种方式,它将要求一个hourswork值,直到它有效为止,然后停止循环,并在循环后无条件地进行一次打印。


通常,您的循环永远不会终止的原因是,while (true)不会停止循环,除非您使用breakreturn或类似的东西退出循环,而这两者都不是出现在您的代码中。

答案 1 :(得分:3)

break在范围内时,您需要使用hourswork退出循环。

赞:

while (true)
{
    if (hourswork < 0 || hourswork > 70)
    {
        cout<<"Please enter a value between 0 to 70: ";
        cin>>hourswork;
    }
    else
    {
        wages = RATE * hourswork;
        cout << "The wage is: " << wages << endl;   
        break;
    }
}