所以我的项目是用行星创建一个枚举,通过海王星(1-8)创建水星的枚举变量。我的书在Enums上大概有2页,并且不太适合使用。
我必须创建一个带有Enum标记为行星的程序......如下所示
enum Planet
{
Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
并提示用户输入数字,1-8将显示哪个行星位于枚举中的该位置。
static void Main(string[] args)
{
System.Console.WriteLine("What Planet Are You Looking For? 1-8? ");
string planet1 = System.Console.ReadLine();
}
我尝试了3种不同的变化,并且所有的东西都没有给我任何东西,我可以显示名称,但不能显示用户输入。所以我已经重新开始了。
答案 0 :(得分:4)
你可以非常简单地将int转换为enum:
if (int.TryParse(Console.ReadLine(), out int planetNum))
{
if (Enum.IsDefined(typeof(Planet), planetNum)
{
Planet myPlanet = (Planet)planetNum;
}
}
您会注意到执行了两项检查:我们使用TryParse
检查用户是否输入了有效的整数,并使用Enum.IsDefined
确保他们输入的整数对应于枚举。
或者,如果您想让用户输入行星的名称而不是数字,您可以使用Enum.TryParse
:
Enum.TryParse(Console.ReadLine(), out Planet planet1);
答案 1 :(得分:1)
BenGalluzzo
你把它钉在头上
并为其他所有人......我确实添加了冥王星。
谢谢大家!
这是最终的代码!
class Program
{
enum Planet
{
Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto
}
static void Main(string[] args)
{
Console.WriteLine("What Planet Are You Looking For? Pluto is a planet! 1-9? ");
string planet1 = System.Console.ReadLine();
Planet planet = (Planet)Convert.ToInt32(planet1);
System.Console.WriteLine(planet);
System.Console.WriteLine();
System.Console.ReadLine();
答案 2 :(得分:0)
转换为字符串,然后转换为枚举。
(Planet)int.Parse(planet1)
答案 3 :(得分:0)
您可以为用户创建菜单,因此更容易看到所有选项:
Console.WriteLine("What Planet Are You Looking For? 1-8? ");
foreach (Planet planet in Enum.GetValues(typeof(Planet)))
{
Console.WriteLine("{0}). {1}", (int)planet, planet.ToString());
}
然后尝试将输入解析为int
int planetInput = 0;
if(int.TryParse(Console.ReadLine(), out planetInput))
{
//Successfully parsed
//Now see if its part of your enum
if(Enum.IsDefined(typeof(Planet), planetInput))
{
Planet selectedPlanet = (Planet)value;
}
}
答案 4 :(得分:0)
虽然这不能正确处理参数切换,也不能正确处理错误,但这是基本上这样做的一种方法。让我们知道这对您有何影响。 :)
<input onchange="proccessSecurity(this);"