好,我敢肯定,它還真有點說我失蹤,但這裏的東西是我:爲什麼我的程序繼續進入我的輸入驗證循環?
int main()
{
string red = red, blue = blue, yellow = yellow, color1,
color2, mixResult;
cout << "Please enter a primary color." <<endl;
cin >> color1;
while ((color1 != red) || (color1 != blue) || (color1 != yellow))
{
cout << "Error!: Please enter a primary color." <<endl;
cout << " *NOTE ALL ENTRIES MUST BE LOWERCASE* " <<endl;
cin >> color1;
}
現在,由於某種原因,每次我跑這一點,例如進入時間紅燈程序進入,同時循環,它不應該。任何幫助將不勝感激。我可以顯示更多的我的代碼,我使用的#include
'string red = red,blue = blue,yellow = yellow'是未定義的行爲。 –
假設你修復@DieterLücking問題,(你是如何得到它的?),邏輯是錯誤的。如果顏色是黃色,那麼它不是紅色,所以'color1!= red'是真實的。甚至不需要查看與其進行或運算的其他表達式。 –
沒有任何顏色可以將多個'!='變成'false',所以至少有兩個'||'的子表達式是'true'。它需要一個'true'子表達式將一個OR轉換爲'true',所以你的循環永遠不會結束。淨結果是你需要一個'&&'。 – dasblinkenlight