2011-10-28 53 views
5

我正在寫一個小型的C#控制檯應用程序。C#Console.Readkey - 等待特定輸入

我想該應用等待來自關於Y或A N按鍵(如果任何其他鍵被按下該應用忽略此並等待Y或一個N和然後運行代碼依賴於用戶指令在Y或N答案。

我想出了這個主意,

while (true) 
{ 
    ConsoleKeyInfo result = Console.ReadKey(); 
    if ((result.KeyChar == "Y") || (result.KeyChar == "y")) 
    { 
     Console.WriteLine("I'll now do stuff."); 
     break; 
    } 
    else if ((result.KeyChar == "N") || (result.KeyChar == "n")) 
    { 
     Console.WriteLine("I wont do anything"); 
     break; 
    } 
} 

可悲的是,雖然VS說,它的犯規像result.Keychat ==作爲操作數不能被應用到「字符」或「字符串'

請幫忙嗎?

在此先感謝。

+0

單引號,不是double ...(result.KeyChar =='Y')|| (result.KeyChar =='y') – ComeIn

回答

8

KeyCharchar"Y"string

你想要像KeyChar == 'Y'這樣的東西來代替。

+0

非常感謝。我的一個小學生的錯誤。在PHP移動之後仍然與C#一起苦苦掙扎!再次感謝。 – tripbrock

+0

另一種方法是:'result.Key == ConsoleKey.Y' – Carol

+0

@K_Rol:這可能會起作用。我擔心它不僅會接受'Y'和'Shift + Y',而且會接受'Ctrl + Y'。 – Gabe

2

檢查這個代替

string result = Console.ReadLine(); 

並檢查結果

2

你想找後是這樣的

 void PlayAgain() 
    { 
     Console.WriteLine("Would you like to play again? Y/N: "); 
     string result = Console.ReadLine(); 
     if (result.Equals("y", StringComparison.OrdinalIgnoreCase) || result.Equals("yes", StringComparison.OrdinalIgnoreCase)) 
     { 
      Start(); 
     } 
     else 
     { 
      Console.WriteLine("Thank you for playing."); 
      Console.ReadKey(); 
     } 
    } 
0

你可能希望用戶按Enter確認他們的反應,所以ReadLine是最好的。還要將字符串響應轉換爲大寫以進行通用比較檢查。像這樣:

string result = Console.ReadLine(); 
if (result.ToUpper().Equals("Y")) 
{ 
    // Do what ya do ...