【问题标题】:Why isn't this y/n loop working?为什么这个 y/n 循环不起作用?
【发布时间】:2011-12-21 17:14:44
【问题描述】:

所以我正在做一个询问你是否想升级你的角色的外观。如果你说是,它会再次询问你,直到你达到 20 级(D&D 等级上限)或直到你说不。

我输入 y 然后回车,它说错了,按 n 然后回车,同样的事情。这是我的代码:

char yn;
do {
    cin >> yn;
    while (yn != 'y' || yn != 'n') {
        cout << "Only y or n are valid options, try again: ";
        cin >> yn;
    }
    if (yn == 'y')
        f.levelUp();
    cout << endl;
} while(yn != 'n' || f.getLevel() != 20);

我觉得我错过了一些非常明显的东西!

【问题讨论】:

    标签: c++ loops logic boolean-logic


    【解决方案1】:
    while (yn != 'y' || yn != 'n')
    

    应该是

    while (yn != 'y' && yn != 'n')
    

    因为只有当输入不是'y' AND才无效,所以它不是'n'

    当您检查不是'n' 并且尚未达到20 级时,外部循环也是如此,否则您只有在输入'n' 并且处于20 级时才能退出该循环。

    【讨论】:

    • 这两件事都做了,一切都很好,现在我只需要修复一些与统计相关的错误!
    【解决方案2】:

    让你的||一个 &&。想想看; yn 不能同时为 'y' 和 'n',因此该条件始终为真。

    【讨论】:

    • 刚刚修好了,应该在最后做n/level检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多