哪种解决方案最适合打破用户输入的循环?

时间:2019-10-07 11:24:44

标签: c# loops switch-statement console-application user-input

我目前正在学习编程,通常会偶然发现一些任务,您在控制台中键入的行数不确定(每个命令稍后我都必须使用switch或if-else语句在main中过滤掉)。最后,您键入“ END”表示您将停止编写行(通常会导致程序结束,但有时我必须打印一些最终代码)。最长的时间,我一直使用此解决方案来选择所需的选择:

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

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

但是今天我有一个主意。 (在进行了一些研究之后)我可以在switch语句中使用单词return添加“ END”大小写。唯一的问题是,由于我的代码位于主程序中,因此它将自动结束程序。解决方案是将代码转移到另一种方法,但这是更好的解决方案,还是有些复杂?

*这是第二个解决方案的样子:

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 :(得分:0)

任何使用中断或返回的解决方案都是正确的,但行为不同。您可以使用发现更好的一种。

  

break语句用于终止循环或   它呈现。之后,控件将传递给语句   在break语句之后显示的内容(如果有)。如果休息   语句存在于嵌套循环中,则仅终止那些   包含break语句的循环。

     

return语句终止方法的执行,并且   将控件返回到调用方法。它返回一个可选的   值。如果方法的类型为void,则return语句可以为   排除。

您可以在此处了解更多信息:https://www.geeksforgeeks.org/c-sharp-jump-statements-break-continue-goto-return-and-throw/

答案 1 :(得分:0)

这是另一种可能的实现方式:

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

            switch (info[0])
            {
                case "END":
                    exit = true;
                    break;
            }
        }
        while (!exit);
    }