2015-09-11 154 views
-3

此不接受任何答案:滯留在無限while循環,做什麼

cout << "Restart yes or no: "; 
cin >> retry; 
while (retry != "yes" or retry != "no"){ 
    cout << "Restart yes or no: "; 
    cin >> retry; 
    system("cls"); 
} 

如果有人能提供替代/修復它,將不勝感激。

回答

4

您的代碼有retry != yes or retry != no。這種情況是一種重言式,因此總會被評估爲真實。

編輯您的代碼:

cout << "Restart yes or no: "; 
cin >> retry; 
while (retry != "no"){ 
    cout << "Restart yes or no: "; 
    cin >> retry; 
    system("cls"); 
} 

如果你的意思是循環直到yesno被接收,那麼while循環應該運行,直到輸入的字符串不等於任。您的意思是使用邏輯AND代替OR。該代碼應閱讀:

while (retry != "yes" && retry != "no"){ 
+1

我喜歡你不只是找出問題所在,同時也給出了邏輯規則的名稱。 – Feign

6

字符串是無論從"yes""no"不同。你的意思是環路,只要該字符串是從不同的兩個"yes""no" - 這意味着使用邏輯「與」操作,而不是「或」運算符:

while (retry != "yes" && retry != "no") {