2011-11-04 35 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