C#枚举...和用户输入

时间:2017-09-14 19:57:26

标签: c# enums

所以我的项目是用行星创建一个枚举,通过海王星(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种不同的变化,并且所有的东西都没有给我任何东西,我可以显示名称,但不能显示用户输入。所以我已经重新开始了。

5 个答案:

答案 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);"