2017-04-20 8 views
2

C#を使用してコマンドプロンプトで実行できるマスターマインドゲームのメニューを作成しようとしています。私が実行している問題は、メニューのユーザー入力をキャプチャすることです。彼らが2を入力した場合は2を入力したことを表示し、そうでない場合は2を表示していないと表示します。マスターマインドゲームのメインメニュー

私が抱えている問題は、ユーザーの入力を実際の整数に変えずに、System.ConsoleKeyInfoからintまたはintへの文字列を明示的に変換できないということです。

using System; 

namespace MasterMind 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      Console.ForegroundColor = ConsoleColor.Green; 
      Console.WriteLine("    MasterMind's Main Menu"); 
      Console.WriteLine("     1: Play"); 
      Console.WriteLine("     2: Help"); 
      Console.WriteLine("     0: Exit"); 
      int userinput = Console.ReadKey(); 
      if (Nuserinput == 2); 
      { 
       Console.WriteLine("This is a number 2"); 
      } 
      else 
      { 
       Console.WriteLine("This is not a number 2"); 
      } 
     } 
    } 
} 
+4

'Console.ReadKey()は' ConsoleKeyInfo'を返します。 'int'ではありません。 –

+0

Console.ReadKey()Doc:https://msdn.microsoft.com/en-us/library/471w8d85%28v=1.0%29.aspx?f=255&MSPPError=-2147217396 – JohnLBevan

+0

'Console.ReadKey()'あなたが思うことはしません。 (これは何度も尋ねられている)。 – crashmstr

答えて

0
ためにあなたの

int userinput = Console.ReadKey(); 
if (Nuserinput == 2) 

を変更

string userInput = Console.ReadKey().KeyChar.ToString(); 
if(input == "2") 

それとも他の回答のようにint型に文字列をひそか。しかしこれのために、文字列は正常に動作します。

3

Console.ReadKey()ConsoleKeyInfoを返すので、あなたはこのような何かする必要がありますintオブジェクトではありません

ConsoleKeyInfo data = Console.ReadKey(); 
int num; 
if (int.TryParse(data.KeyChar.ToString(), out num) && num == 2) 
{ 
    Console.WriteLine("This is a number 2"); 
}else{ 
    Console.WriteLine("This is not a number 2"); 
} 
5

Console.ReadKey()returns a ConsoleKeyInfo objectを、。次の例のように、そこからcharを取得することができます。

var key = Console.ReadKey(); 
var keyChar = key.KeyChar; 

あなたはchar値が整数を表現するためにことを期待していた場合、あなたは1に変換することができます:

int keyInt = (int)Char.GetNumericValue(keyChar); 

別に、他のエラーからあなたをチェックするかもしれませんユーザに有効な整数を入力していない場合に備えたい場合、これは少なくともあなたが探している整数値を取得します。