我知道這可能是很愚蠢的,但我不明白,爲什麼這個if語句是失敗的:如果語句失敗這條短路if語句有什麼問題?
如果我在控制檯上輸入1
或2
,第一,但第二個,如果通過我首先將結果存儲在布爾中。爲什麼?我可能在這裏做些愚蠢的事情?
Console.WriteLine("Enter 1 for AM or 2 for PM?");
string amOrPM = Console.ReadLine();
//Why does this fail if I enter 1 or 2?
if (amOrPM != "1" || amOrPM != "2")
Console.WriteLine("You must enter 1 for AM or 2 for PM. Try again.");
//This works!
bool valid = (amOrPM != "1" || amOrPM != "2");
if (!valid)
Console.WriteLine("You must enter 1 for AM or 2 for PM. Try again.");
我只注意到了第一個if語句,我只好把& &代替||,但是這是令人困惑,因爲我把它讀作:如果amOrPm
不等於1
或amOrPM
不等於2
,然後去控制檯線。我讀了這個錯誤的定義嗎?
'amOrPM!=「1」|| amOrPM!=「2」'永遠是真的。你不想'如果(amOrPM!=「1」&& amOrPM!=「2」)'? –
您的意思是&&? –
'(amOrPM!=「1」|| amOrPM!=「2」)'與'!(amOrPM ==「1」&& amOrPM ==「2」)相同。向你學習德摩根的法律。 – Oded