2013-10-26 105 views
-3

由於某些原因,這非常簡單while循環保持無限循環。也許我一直在盯着這個太長時間,或者做出了一些真正明顯的,愚蠢的錯誤。有人可以幫我修復代碼嗎?我嘗試輸入「ste」,但它一直給我輸出無效。C++ while循環在無限循環中,即使在正確答案上

while (type1 != "nor" || type1 != "fir" || type1 != "wat" || type1 != "ele" || type1 != "gra" || type1 != "ice" || type1 != "fig"|| type1 != "poi" || type1 != "gro" || type1 != "fly" || type1 != "psy" || type1 != "bug" || type1 != "roc" || type1 != "gho" || type1 != "dra" || type1 != "dar" || type1 != "ste" || type1 != "fai" || type1 != "n/a") 
{ 
    cout << "Invalid type. Re-enter type." << endl; 
    cin >> type1; 
} 
+3

也許''ste「'從屏幕上掉下來了。用長的線條,你永遠不會知道...... :) – jrok

+5

使用&&,你的條件永遠是真的 – Leeor

+1

[短路評估](http://en.wikipedia.org/wiki/Short-circuit_evaluation)。當你說'a || b',如果'a'爲'true','b'永遠不會被檢查。 – jrok

回答

1

這是不可能的這個循環永遠到底是什麼。唯一可能的途徑這一下可能最終會是type1norfirwat,...在同一時間。你可能想要用ands(&&)替換所有的Ors(||)。在這種情況下,你的循環將停止在此刻type1等於比較字符串(norfirwat ...),這當然是可能的一個。

1

你的狀態永遠是真實的,TYPE1的任何給定值,是有可能比您指定的保存(至多)一個所有值不同。

如果使用& &代替||你會得到你旨在實現