为什么这个y / n循环不起作用?

时间:2011-11-04 03:23:22

标签: c++ loops logic boolean-logic

所以我看看你是否想升级你的角色。如果你说是,它会再次问你,直到你达到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);

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

2 个答案:

答案 0 :(得分:7)

制作你的||和&amp;&amp;想一想; yn不能同时为'y'和'n',因此条件始终为真。

答案 1 :(得分:1)

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

应该是

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

因为如果输入不是'y' AND ,它只是无效,它不是'n'

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