程序未根据案例声明产生预期结果

时间:2019-07-08 19:34:13

标签: c# switch-statement

我有一个控制台应用程序,它等待用户输入1到4之间的一个数字。根据选择,一个case语句将打印出相应的控制台语句,或者转到其他方法。当我启动程序并输入数字时,什么也没有返回,程序结束。

如果用户选择数字1,我​​想打印出一行文本,然后执行名为NewEntry的程序。似乎甚至没有启动该程序。

class Program
{
    static void Main(string[] args)
    {
        //initial Prompt

        Console.WriteLine("***Welcome to the Asset Directory***");
        Console.WriteLine("Please Select an Option");
        Console.WriteLine("1. New Entry");
        Console.WriteLine("2. Edit Entry");
        Console.WriteLine("3. Look Up");
        Console.WriteLine("4. Print Master List");

        int userInput;

        userInput = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine(userInput);

        switch (userInput)
        {
            case '1':
                Console.WriteLine("1. New Entry");
                NewEntry();
                break;
            case '2':
                Console.WriteLine("2. Edit Entry");
                break;
            case '3':
                Console.WriteLine("Look Up");
                break;
            case '4':
                Console.WriteLine("4. Print Master List");
                break;

            default:
                Console.WriteLine("Invalid Selection");
                break;

        }

    }

    static void NewEntry ()
    {
        Console.WriteLine("Enter the DSCADA Asset Information");
        Test_RTU = new DSCADA_RTU();
        Test_RTU.StationName = Console.ReadLine();
        Test_RTU.RTUmake = Console.ReadLine();
        Test_RTU.RTUtype = Console.ReadLine();
        Test_RTU.CommunicationType = Console.ReadLine();
        Test_RTU.DateInService = Console.ReadLine();
    }
}

class Test_RTU
{
    public string EDiv { get; set; } //division that owns the asset
    public string StationName { get; set; } // name of station RTU is located
    public string RTUmake {get; set;}      
    public string RTUtype { get; set; }    
    public string CommunicationType { get; set; } 
    public string DateInService { get; set; }  


}

1 个答案:

答案 0 :(得分:3)

您的开关盒应如下所示:

case 1:
    ...
case 2:
    ...
case 3:
    ...
case 4:
    ...

不是这个:

case '1':
    ...
case '2':
    ...
case '3':
    ...
case '4':
    ...

userInputint,因此大小写也应为int。您正在使用的文字(例如'1')是char文字。恰好发生了从charint的隐式转换,将'1'转换为整数49'2'转换为整数50等等。由于这种隐式转换,您的代码可以通过编译,但无法按预期工作。