如何在 switch case 中重复一个问题

How do I repeat a question in a switch case

如果输入不正确,我正在尝试重复问题。这是代码:

Console.WriteLine("choose a name");
string userInput = Console.ReadLine();
Boolean input = true;


switch (userInput)
{
    case "joe":
        Console.WriteLine("you chose a joe");
        break;

    case "bob":
        Console.WriteLine("you chose a bob");
        break;

}

如果它不是它重新提出问题的两个答案之一,我该怎么办?

您需要一个循环(whiledo-while)来重复迭代而不是 switch-case。

switch-case用于控制停止循环的标志(isCorrectInput)。

bool isCorrectInput = false;

do
{
    Console.WriteLine("choose a name");
    string userInput = Console.ReadLine();


    switch (userInput)
    {
        case "joe":
            Console.WriteLine("you chose a joe");
            isCorrectInput = true;
            break;

        case "bob":
            Console.WriteLine("you chose a bob");
            isCorrectInput = true;
            break;
    }
} while (!isCorrectInput);

参考

Iteration statement

您应该使用 bool 变量,它将确定您是否需要重复逻辑。将它与一个循环结合起来,你会得到这个:

        bool keepAsking = true;
        while (keepAsking)
        {
            Console.WriteLine("choose a name");
            string userInput = Console.ReadLine();
            Boolean input = true;


            switch (userInput)
            {
                case "joe":
                    Console.WriteLine("you chose a joe");
                    keepAsking = false;
                    break;

                case "bob":
                    Console.WriteLine("you chose a bob");
                    keepAsking= false;
                    break;
            }
        }

你可以尝试这样的事情。但是您需要稍微更改一下代码。

class XYZ
    {
        static void Main(string[] args)
        {
            GetData()
        }
    }


static void GetData()
{
  string userInput = Console.ReadLine();
  checkcondition(userInput);
}

static void checkcondition(userInput)
{
switch (userInput)
{
    case "joe":
        Console.WriteLine("you chose a joe");
        break;

    case "bob":
        Console.WriteLine("you chose a bob");
        break;
    default:
        GetData();
        break;
}
}

使用 default 大小写。

如果 switch 语句中的 none 个案例匹配,则运行默认案例。 这是一个例子。

Console.WriteLine("choose a name");
string userInput = Console.ReadLine();

switch (userInput)
{
    case "joe":
        // ...
        break;

    case "bob":
        // ...
        break;

    default:
        // This runs if userInput is neither "joe" nor "bob"
}

然后你可以创建一个方法,将 choose a name 写入控制台,接受用户的输入,然后运行 ​​switch 语句——默认情况下会调用相同的方法。

void GetName()
{
    // Write "choose a name" to the console
    // Take the user's input
    
    switch (userInput)
    {
        case "joe":
            // ...
            break;

        case "bob":
            // ...
            break;

        default:
            GetName();
            return;
    }
}

您也可以使用更小的代码实现相同的结果,但使用 while 循环而不是 switch 语句

while(true){
    Console.Write("Choose a Name: ");
    var name = Console.ReadLine().ToLower();
    if(name == "joe" || name == "bob"){
        Console.WriteLine("You chose a " + name + "!");
        break;
    }else{
        Console.WriteLine("Invalid Selection, Try Again");
    }
}