我只想接受以下狀態的大寫兩個字母縮寫:AK、WA、OR、CA、AZ、NM、CO 或 UT。如果輸入不是其中之一,請向用戶請求新輸入以進行更正。我下面的代碼用于過濾結果,但是當我輸入“UT”或“WA”時,它不會退出 while 回圈并繼續。
Write("State (We only ship to AK, WA, OR, CA, AZ, NM, CO, or UT):\t");
stateName = Convert.ToString(ReadLine().ToUpper());
while (!stateName.Contains("AK") || !stateName.Contains("WA") || !stateName.Contains("OR")
|| !stateName.Contains("CA") || !stateName.Contains("AZ") || !stateName.Contains("NM")
|| !stateName.Contains("CO") || !stateName.Contains("UT"))
{
Write("Error: We do not ship to {0}. We ONLY ship to AK, WA, OR, CA, AZ, NM, CO, or UT\t", stateName);
stateName = Convert.ToString(ReadLine().ToUpper());
}
進一步修改它,我讓它作業:
Write("State (We only ship to AK, WA, OR, CA, AZ, NM, CO, or UT):\t");
stateName = Convert.ToString(ReadLine().ToUpper());
if (stateName != "AK" || stateName != "WA" || stateName != "OR"
|| stateName != "CA" || stateName != "AZ" || stateName != "NM"
|| stateName != "CO" || stateName != "UT")
{
Write("Error: We do not ship to {0}. We ONLY ship to AK, WA, OR, CA, AZ, NM, "
"CO, or UT\t", stateName);
stateName = Convert.ToString(ReadLine().ToUpper());
}
我的問題是,如果邏輯非常相似,為什么 while 回圈不起作用?是!variableName不同的variableName != value嗎?
uj5u.com熱心網友回復:
問題是您的邏輯,您應該使用And &&運算子而不是Or ||:
while (
!stateName.Contains("AK") && !stateName.Contains("WA") && !stateName.Contains("OR")
&& !stateName.Contains("CA") && !stateName.Contains("AZ") && !stateName.Contains("NM")
&& !stateName.Contains("CO") && !stateName.Contains("UT"))

我假設您正在學習,所以我使用了這段代碼。在現實世界的場景中,您應該使用陣列來檢查這樣的許多條件(您需要知道for回圈和Array)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/335811.html
