Программа не дает ожидаемого результата на основании описания случая - PullRequest
0 голосов
/ 08 июля 2019

У меня есть консольное приложение, которое ожидает, когда пользователь введет число от 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 Ответ

3 голосов
/ 08 июля 2019

Ваши регистры переключения должны выглядеть следующим образом:

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

не так:

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

userInput - это int, поэтому регистры должны быть int литераламитакже.Используемые вами литералы (например, '1') - это литералы char.Просто так происходит неявное преобразование из char в int, преобразование '1' в целое число 49, '2' в целое число 50 и т. Д. Из-за этого неявного преобразования ваш код проходиткомпиляция, но не работает должным образом.

...