Функция возврата к выбору меню;Заявление о смене проекта - PullRequest
0 голосов
/ 13 марта 2019

Мне нужно сделать функцию для возврата выбранной опции меню, а затем инструкцию switch, чтобы показать, какая клавиша нажата, но у меня есть проблемы с функциональной частью.

class Program
{   
    static void displayMainMenu()
    {
        string title = "Old Yeller Pet Store";
        Console.WriteLine("\n\n");
        Console.WriteLine(String.Format("{0," + ((Console.WindowWidth /2) + (title.Length / 2 )) + "}", title));
        Console.WriteLine("\n");

        title = "Main Menu";
        Console.WriteLine("\n\n");
        Console.WriteLine(String.Format("{0," + ((Console.WindowWidth /2) + (title.Length / 2 )) + "}", title));
        Console.WriteLine("\n");

        string line = "1.    Buy a Pet";
        Console.WriteLine(line.PadLeft(line.Length+1 + 50));

        string line2 = "2.    Buy Food";
        Console.WriteLine(line2.PadLeft(line2.Length+1 + 50));

        string line3 = "3.    File OPs";
        Console.WriteLine(line3.PadLeft(line3.Length+1 + 50));

        string line4 = "4.    Manager";
        Console.WriteLine(line4.PadLeft(line4.Length+1 + 50));

        string line5 = "5.    Quit";
        Console.WriteLine(line5.PadLeft(line5.Length+1 + 50));
    }

    static void getChoice()
    {
        Console.WriteLine("Please input which option you choose to use");
    }

    public static void Main(string[] args)
    {
        displayMainMenu();
        Console.ReadKey();
    }
}

}

Ответы [ 3 ]

0 голосов
/ 13 марта 2019

Учтите, что Console.ReadKey () будет ждать, пока вы не нажмете клавишу, чтобы продолжить. После этого свойство Console.ReadKey (). Key будет содержать значение нажатой клавиши. Итак, в этом случае ...

var key = Console.ReadKey().Key;
switch (key) {
    case ConsoleKey.D1:
        Console.WriteLine("You pressed 1");
        break;
    case ConsoleKey.D2:
        Console.WriteLine("You pressed 2");
        break;
    //etc...//
    default:
        Console.WriteLine("You pressed something else");
        break;
}
0 голосов
/ 13 марта 2019

Так что я чувствую, что это прогресс, но я могу ошибаться?Заменит ли оператор Switch оператор If в моей функции getChoice?

class Program
{   
    static void displayMainMenu()
    {
        string title = "Old Yeller Pet Store";
        Console.WriteLine("\n\n");
        Console.WriteLine(String.Format("{0," + ((Console.WindowWidth /2) + (title.Length / 2 )) + "}", title));
        Console.WriteLine("\n");

        title = "Main Menu";
        Console.WriteLine("\n\n");
        Console.WriteLine(String.Format("{0," + ((Console.WindowWidth /2) + (title.Length / 2 )) + "}", title));
        Console.WriteLine("\n");

        string line = "1.    Buy a Pet";
        Console.WriteLine(line.PadLeft(line.Length+1 + 50));

        string line2 = "2.    Buy Food";
        Console.WriteLine(line2.PadLeft(line2.Length+1 + 50));

        string line3 = "3.    File OPs";
        Console.WriteLine(line3.PadLeft(line3.Length+1 + 50));

        string line4 = "4.    Manager";
        Console.WriteLine(line4.PadLeft(line4.Length+1 + 50));

        string line5 = "5.    Quit";
        Console.WriteLine(line5.PadLeft(line5.Length+1 + 50));


    }

    static void getChoice()
    {
        string option;
        int choice;
        Console.WriteLine("Please input which number option you choose to use");
        option = Console.ReadLine();
        choice = Convert.ToInt32(option);
        if (choice == 1)
        {
            Console.Write("Lipsum");
            //code to open Buy a Pet menu
        }



    }


    public static void Main(string[] args)
    {
        displayMainMenu ();
        getChoice();



        Console.ReadKey();

    }
}
0 голосов
/ 13 марта 2019

Что вам нужно сделать, это изменить метод getChoice, чтобы он возвращал строку, которая будет выбранной опцией.А в методе getChoice напишите Console.ReadLine, поместите значение в переменную и верните переменную.Таким образом, вы вызываете функцию getChoice после функции displayMenu и получаете значение.

Я бы сам предоставил код, но поскольку это скорее домашнее задание, я думаю, вам будет лучше понять это и попробоватьсделать это самостоятельно с этой идеей:)!

Надеюсь, это поможет!

...