2011-11-04 86 views
0

所以我正在看一看,询问你是否想升级你的角色。如果你说是,它会再次询问你,直到你达到20级(D & D等级上限)或者直到你说不。为什么不是这个y/n循环工作?

我键入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); 

我觉得我失去了一些非常明显的东西!

回答

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

应该

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

因为它是唯一无效的,如果输入不是'y'这不是'n'

也是一样的,当你检查不'n'外环,还没有20级,否则,如果您输入'n'你只能退出该循环,你在20级

+0

这两个都很好,现在我只需修复一些统计相关的错误! – Portaljacker

7

让你的||一个& &。想想看, yn不能是'y'和'n',所以这个条件总是成立的。

+0

就修好了​​,应该在最后进行n /等级检查。 – Portaljacker