我正在尝试为主题游戏创建菜单,可以使用C#在命令提示符下运行。我遇到的问题是捕获菜单的用户输入。如果他们输入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");
}
}
}
}
答案 0 :(得分:5)
Console.ReadKey()
returns a ConsoleKeyInfo
object,不是int
个对象。您可以从中获得char
,例如:
var key = Console.ReadKey();
var keyChar = key.KeyChar;
如果您希望char
值表示整数,则可以将其转换为:
int keyInt = (int)Char.GetNumericValue(keyChar);
除了其他错误检查之外,您可能希望在用户不输入有效整数的情况下放置,这至少会获得您正在寻找的整数值。< / p>
答案 1 :(得分: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");
}
答案 2 :(得分:0)
更改您的
int userinput = Console.ReadKey();
if (Nuserinput == 2)
致:
string userInput = Console.ReadKey().KeyChar.ToString();
if(input == "2")
或者将字符串转换为int,如其他答案所示。但为此,一个字符串工作正常。