2011-10-28 10 views
5

私は小さなC#のコンソールアプリケーションを書いています。C#Console.Readkey - 特定の入力を待つ

私は、Yキーまたは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は言うものの、オペランドが「CHAR」または 'に適用されるカントとしてresult.Keychat ==のようなそのdoesntの文字列 '

何か助けてください?

ありがとうございます。

+0

ダブルクォート...(result.KeyChar == 'Y')|| (result.KeyChar == 'y') – ComeIn

答えて

8

KeyCharは、charであり、"Y"は、stringである。

代わりにKeyChar == 'Y'のようなものが必要です。この代わりに

string result = Console.ReadLine(); 

、チェックした後の結果

+0

ありがとうございます。私の就学生の間違い。まだPHPの移動後にC#と苦労しています!再度、感謝します。 – tripbrock

+0

これに代わる方法があります: 'result.Key == ConsoleKey.Y' – Carol

+0

@K_Rol:それはうまくいくかもしれません。私はそれが 'Y'と' Shift + Y'だけでなく 'Ctrl + Y 'も受け入れると懸念しています。 – Gabe

2

チェック、ReadLineが最適です。また、文字列レスポンスを大文字に変換して汎用比較チェックを行います。同様に:

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

何あなたが探してすることはおそらく、ユーザーがEnterキーを押してその応答を確認したい、この

 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

のようなものである

関連する問題