2017-04-20 89 views
2

我想創建一個可以在使用C#的命令提示符下運行的mastermind遊戲菜單。我遇到的問題是捕獲菜單的用戶輸入。如果他們輸入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=vs.110%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,所以你需要做這樣的事情:

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,這是不是一個int對象。你可以從一個char,例如:

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

如果用戶希望char值來表示一個整數,你可以將其轉換爲一個:

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

除了其它錯誤檢查你可能如果用戶不是輸入一個有效的整數,這將至少得到你正在尋找的整數值。