2013-10-24 49 views
0

我想創建一個簡單的do-while語句,以確保用戶輸入是Y或N,並且如果不要求它們再次輸入。如果是Y或N,那麼應用程序會繼續。這是我迄今爲止,但我的應用程序,雖然它只是停留在一個循環詢問用戶輸入。新的C# - 感謝您的任何幫助。用於驗證用戶輸入的C#執行語句

string answer = ""; 
    do 
    { 
     //Ask the user if they want to roll the dice 
     Console.WriteLine("Would you like to roll the dice (y or n)?"); 
     //Get the user's response and validate that it is either 'y' or 'n'. 
     answer = Console.ReadLine(); 
    } while (answer != "Y" || answer != "N"); 
+0

因此,即使用戶輸入'「N」',該循環應該繼續詢問他們是否要擲骰子?這看起來並不直觀。 –

回答

2

看起來像一個簡單的布爾邏輯錯誤。

你的while語句應該是: while(answer!=「Y」& & answer!=「N」);

既然你想確定答案還沒有Y而答案也還沒有N.循環雖然它不是。希望這可以幫助!

+1

打敗我吧。此時如果輸入「Y」,條件答案!=「N」將爲真,如果輸入「N」,則條件答案!=「Y」將爲真,因此您卡住了。 – iambeanie

+0

我以爲||是或和&&是和?我的邏輯是,它不能是Y和N,所以它是或者...我只是試過&&它的工作,但我不明白爲什麼它的工作。 – cakes88

+0

不管謝謝......我花了比我想承認想要弄清楚的時間更長的時間。 – cakes88

1

你的邏輯是OR ||,而不是與&&。它總是或者不是Y或者不是N,因爲它不能同時存在。當它是N它不是Y而相反也是如此。

改爲使用AND &&

此外,您的比較區分大小寫。考慮檢查大小寫。

1

更改||到& &,這應該爲你解決它。

另一種方式來看待它可能是這樣的:

斷點條件是當答案是「Y」或答案是「否」。

您希望循環繼續只要中斷條件不滿足,所以你可以有

(回答==「Y」 ||回答==「N」),然後沒有結果

while(!(answer == "Y" || answer == "N") 
1

2東西

  1. 由於所有的表示,與&&
  2. 與您輸入的內容匹配用戶大寫更換|| r Y & N導致用戶可以輸入y。 A Yy,都是用戶的正面決定。

answer.ToUpper() != "Y" && answer.ToUpper() != "N"