【问题标题】:do while Loop Endless [duplicate]做while循环无尽[重复]
【发布时间】:2016-11-27 00:11:22
【问题描述】:

试图弄清楚为什么当你选择 y 时这会是一个无限循环。当用户选择y或Y时,它不应该离开do while循环吗?

#include <iostream>
using namespace std;

int main()
{
    int choice;


    do {
        cout << "Enter a number. If you would like to quit, press y.";
        cin >> choice;

        if (choice % 2 == 1)
        {
            cout << "Odd \n";
        }
        else
        {
            cout << "Even \n";
        }

    } while (choice != 'y'|| choice != 'Y');


    return 0;
}

【问题讨论】:

  • 如果您想快速修复,请将while (choice != 'y'|| choice != 'Y') 更改为while (cin)
  • (choice != 'y'|| choice != 'Y') 不总是这样吗?我的意思是即使选择 == 'y' 它不是 'Y' 如果它是 'Y' 它不是 'y' 如果它是任何其他字母它也是真的..
  • 我按照书上的要求进行操作。 “编写一个 do-while 循环,显示用户输入的是 int 偶数还是奇数。然后代码应该询问用户是否要测试另一个数字。只要用户输入 Y 或 y,循环就应该重复。在 do-while 循环测试中使用逻辑 OR 运算符。”
  • 其实@drescherjm 是对的。实际情况总是会渲染为真,因为当choice == y 时,choice != Y 和false ||真=真。正确的条件应该是!(choice == 'y' || choice == 'Y'),相当于(choice != 'y' && choice != 'Y')。

标签: c++


【解决方案1】:

choice 是一个int;您无法将y 的字母读入其中。当您尝试时,它会“中断”cin,从而导致您的无限循环。

【讨论】:

    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2014-04-27
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多