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

Trying to loop a switch with an invalid input (C#)

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

string str = Console.ReadLine(); 
char option = char.Parse(str);
//Need to repeat this switch:
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.");
        break;
}
Console.ReadLine();

您可以使用 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;
    }
}

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;
    }
}

要重复开关,您需要使用一个 loop.I 认为您正在寻找如下内容:

    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。仅当执行 default 情况(即无效输出)时,该标志才会设置为 true,因此循环仅在这种情况下重复。

您可以在 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();