2017-04-20 2 views
2

Ich versuche, das Menü für ein Mastermind-Spiel zu erstellen, das in einer Eingabeaufforderung mit C# ausgeführt werden kann. Das Problem, auf das ich stoße, ist die Erfassung der Benutzereingaben für das Menü. Wenn sie eine 2 eingeben, sollte sie anzeigen, dass sie die Nummer zwei eingegeben haben und wenn nicht, würde sie sagen, dass sie die Nummer zwei nicht angezeigt haben.Hauptmenü für ein Mastermind-Spiel

Das Problem, das ich habe, ist, dass es nicht die Benutzereingabe in eine Arbeits-Integer und wird entweder sagen, dass es nicht explizit konvertieren von System.ConsoleKeyInfo zu int oder String zu 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()' gibt 'ConsoleKeyInfo' nicht ein' int' zurück. –

+0

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

+0

Bitte lesen Sie einfach die Dokumentation online für 'Console.ReadKey()'. Es tut nicht was du denkst. (und das wurde oft gefragt). – crashmstr

Antwort

0

Ihre ändern

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

An:

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

Oder die Zeichenfolge in einem int verdeckte wie in anderen Antworten gezeigt. Dafür funktioniert eine Saite gut.

3

Console.ReadKey() gibt ein ConsoleKeyInfo, so dass Sie so etwas wie dies tun müssen:

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, die kein int Objekt ist. Sie können eine char aus, dass zum Beispiel erhalten:

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

Wenn Sie, dass char Wert erwarten eine ganze Zahl darstellen, können Sie es zu einem umwandeln kann:

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

Neben anderen Fehler, den Sie Überprüfung könnte Wenn der Benutzer nicht eine gültige Ganzzahl eingeben möchte, würde dies zumindest Ihren ganzzahligen Wert erhalten, den Sie suchen.

Verwandte Themen