Какое решение лучше всего вырвать из цикла при вводе пользователем? - PullRequest
0 голосов
/ 07 октября 2019

В настоящее время я изучаю программирование и часто сталкиваюсь с задачами, когда вы вводите в консоль неопределенное количество строк (каждая - это команда, которую я должен отфильтровать позже в main с помощью операторов switch или if-else) и наend, введите «END», чтобы сказать, что вы прекратите писать строки (часто это приводит к завершению программы, но иногда мне приходится печатать какой-то окончательный код). Долгое время я использовал это решение для выбора необходимого выбора:

while (true) {
    var input = Console.ReadLine().Split();
    if (input[0] == "END") break;

    switch (input[0]) {
        //Task specific cases
    }
}

, но сегодня у меня случайно возникла идея. (После того, как я провел некоторое исследование), я мог добавить регистр «END» в операторе switch, используя слово return. Единственная проблема заключается в том, что, поскольку мой код в основном, он автоматически завершает программу. Решение состоит в том, чтобы перенести код в другой метод, но лучше ли это решение или оно немного усложнено?

* Вот как выглядит второе решение:

static void Main(string[] args) {
        Logic();
    //Other stuff to do, if the task requires it
}

public static void Logic() {
    while (true) {
            var info = Console.ReadLine().Split();

                switch (info[0]) {
                        case "END": return;
                        //Other task specific cases
                }
        }
}

** Извинитеесли пост не совсем понятен, я не очень разбираюсь в терминологии программирования.

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Это еще одна возможная реализация:

 public static void Logic()
    {
        bool exit = false;
        do
        {
            var info = Console.ReadLine().Split();

            switch (info[0])
            {
                case "END":
                    exit = true;
                    break;
            }
        }
        while (!exit);
    }
0 голосов
/ 07 октября 2019

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

Оператор break используется для завершения цикла или оператора, в котором он присутствует. После этого элемент управления перейдет к операторам, представленным после оператора break, если они доступны. Если оператор break присутствует во вложенном цикле, он завершает только те циклы, которые содержат оператор break.

Оператор return завершает выполнение метода и возвращает управление вызывающему методу. Возвращает необязательное значение. Если тип метода void, оператор return может быть исключен.

Подробнее можно прочитать здесь: https://www.geeksforgeeks.org/c-sharp-jump-statements-break-continue-goto-return-and-throw/

...