Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用switch语句创建连续运行的应用程序_C#_Loops_Switch Statement - Fatal编程技术网

C# 使用switch语句创建连续运行的应用程序

C# 使用switch语句创建连续运行的应用程序,c#,loops,switch-statement,C#,Loops,Switch Statement,我接到一个任务,我必须连续运行一个程序,除非按下3键,在这种情况下程序关闭。如果按下1或2键,则需要显示“菜单1”或“菜单2”,任何其他键都会发出错误消息,告知用户按1、2或3(退出程序) 我设法使我的开关工作,但我在保持程序运行时遇到了问题,因此一个人可以输入一个1,然后输入一个2,这应该会给出结果: 菜单1 菜单2 我试图将程序放入循环中,但结果不是很好,下面是我的代码: Console.WriteLine("*** MENU ***\n\n1. Display Menu 1\n2. Dis

我接到一个任务,我必须连续运行一个程序,除非按下3键,在这种情况下程序关闭。如果按下1或2键,则需要显示“菜单1”或“菜单2”,任何其他键都会发出错误消息,告知用户按1、2或3(退出程序)

我设法使我的开关工作,但我在保持程序运行时遇到了问题,因此一个人可以输入一个1,然后输入一个2,这应该会给出结果:

菜单1 菜单2

我试图将程序放入循环中,但结果不是很好,下面是我的代码:

Console.WriteLine("*** MENU ***\n\n1. Display Menu 1\n2. Display Menu 2\n3. Exit");
        ConsoleKeyInfo uservalue = Console.ReadKey();
        string foo = uservalue.KeyChar.ToString();
        while (foo != "3")
        { 
            switch (foo)
            {
                case "1":
                    Console.WriteLine("Menu 1");
                    Console.ReadLine();
                    break;
                case "2":
                    Console.WriteLine("Menu 2");
                    Console.ReadLine();
                    break;
                default:
                    Console.WriteLine("Invalid Selection. Please enter 1, 2 or 3");
                    Console.ReadLine();
                    break;
           }

        }

快到了。。。您要做的是等待用户输入,并仅在按下3时退出

示例

string command;
do
{
    command = Console.ReadLine();
}
while(!"3".Equals(command, StringComparison.InvariantCultureIgnoreCase))

只需在循环中移动前三行,并删除所有
case
语句中的
ReadLine
。另外,我想知道为什么要执行
KeyChar.ToString()
。您可以使用
switch(KeyChar){case'1':…}
很好。或者更好,直接使用
。@Konrad Kokosa如果我这样做,while(foo!=“3”)将不再工作,因为输入3的部分在循环本身中。删除ReadLine语句也会导致控制台连续写入文本。@bucket,但所有这些方法调用都是非常自我解释的。。。当然,在循环之前,您必须再次
ReadKey