尝试使用无效输入循环开关(C#)

时间:2016-02-23 05:52:11

标签: c# switch-statement

无论如何我不知道我应该怎么做...在我的应用程序中,如果输入无效,我需要让开关重复。一旦我输入不同的结果,所有应用程序都会退出。这是我的代码:

$scope.selectedRoutines

4 个答案:

答案 0 :(得分:2)

您可以使用while声明。

bool shouldRun = true;

while(shouldRun)
{
    switch (option)
    {
        case 'N':
            Console.WriteLine("Creating New App...");
            shouldRun = false;
            break;
        case 'L':
            Console.WriteLine("Loading App...");
            shouldRun = false;
            break;
        case 'O':
            Console.WriteLine("Loading Options...");
            shouldRun = false;
            break;
        case 'Q':
            Console.WriteLine("Exiting Application...");
            System.Environment.Exit(1);
            break;
        default:
            Console.WriteLine("Invalid input.");
            shouldRun = true;
            break;
    }
}

答案 1 :(得分:2)

switch置于循环中

bool invalidInput = true;

while (invalidInput)
{
    string str = Console.ReadLine(); 
    char option = char.Parse(str);

    switch (option)
    {
        case 'N':
            Console.WriteLine("Creating New App...");
            invalidInput = false;
            break;
        case 'L':
            Console.WriteLine("Loading App...");
            invalidInput = false;
            break;
        case 'O':
            Console.WriteLine("Loading Options...");
            invalidInput = false;
            break;
        case 'Q':
            Console.WriteLine("Exiting Application...");
            System.Environment.Exit(1);
            break;
        default:
            Console.WriteLine("Invalid input.");
            break;
    }
}

答案 2 :(得分:1)

要重复切换,您需要使用一个循环。我认为您正在寻找以下内容:

    bool ExitFlag = true;
    while (ExitFlag)
    {
        ExitFlag = false;
        switch (option)
        {
            case 'N':
                Console.WriteLine("Creating New App...");
                break;
            case 'L':
                Console.WriteLine("Loading App...");
                break;
            case 'O':
                Console.WriteLine("Loading Options...");
                break;
            case 'Q':
                Console.WriteLine("Exiting Application...");
                System.Environment.Exit(1);
                break;
            default:
                Console.WriteLine("Invalid input.");
                ExitFlag = true;
                break;
        }
    }

注意如何运作

ExitFlag成为控制while循环的布尔值(停止迭代并在ExitFlag为false时退出while)。并使用true进行初始化。在每次控件进入while时,标志设置为false,这样我们就可以避免在多种情况下将其设置为false。只有在执行true情况时(即无效输出),该标志才会设置为default,因此循环仅在此条件下重复。

答案 3 :(得分:-1)

您可以在C#中使用Goto:label选项。

参考:https://msdn.microsoft.com/en-us/library/13940fs2.aspx

    ReadAgain:
    string str = Console.ReadLine(); 
    char option = char.Parse(str);

    //The switch itself:
    switch (option)
    {
        case 'N':
            Console.WriteLine("Creating New App...");
            break;
        case 'L':
            Console.WriteLine("Loading App...");
            break;
        case 'O':
            Console.WriteLine("Loading Options...");
            break;
        case 'Q':
            Console.WriteLine("Exiting Application...");
            System.Environment.Exit(1);
            break;
        default:
            Console.WriteLine("Invalid input.");
            goto ReadAgain;
            break;
    }
    Console.ReadLine();