循环时不会退出

-5 c# loops while-loop

当我输入1,2或3时,它应该从循环中退出或不输入它.但是如果我写的不是那些3个数字,它应该循环直到我输入1,2或3.

但由于某种原因,我不能让它不进入循环或退出它.即使输入循环1,2或3是正确的数字也无关紧要.无论如何,它仍然会输入并循环.

string userValue = Console.ReadLine();
string message = "";

Console.WriteLine("Card 1, 2, or, 3?");
Console.ReadLine();


while (userValue != "1" || userValue != "2" || userValue != "3")
{
    message = "try again. Card 1, 2, or, 3?";
    Console.WriteLine(message);
    Console.ReadLine();
}

if (userValue == "1")
{
    message = "You win a Coke";
}
else if (userValue == "2")
{
    message = "You win a Diet Coke";
}
else if (userValue == "3")
{
    message = "You win a Apple Juice";
}
Console.WriteLine(message);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

Fra*_*yce 7

您还需要userValue在while循环中分配内部.

编辑:需要切换你的||s &&- 值将永远不是3个值之一;)

编辑2:您还需要在while循环之前添加作业.谢谢@Nikolai

while (userValue != "1" && userValue != "2" && userValue != "3")
{
    message = "try again. Card 1, 2, or, 3?";
    Console.WriteLine(message);
    // vvvvvv is missing
    userValue = Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

在其他新闻中,你听说过do..while循环吗?


Nik*_*nte 6

您需要Console.ReadLine()在循环内部和途中分配每个时间.

userValue = Console.ReadLine();

但是你有比这更大的问题,因为userValue != "1" || userValue != "2" || userValue != "3"永远都是如此.

我想你的意思是 userValue != "1" && userValue != "2" && userValue != "3"

        string userValue = Console.ReadLine();
        string message = "";

        Console.WriteLine("Card 1, 2, or, 3?");
        userValue = Console.ReadLine(); // Assign

        while (userValue != "1" && userValue != "2" && userValue != "3")
        {
            message = "try again. Card 1, 2, or, 3?";
            Console.WriteLine(message);
            userValue = Console.ReadLine(); // Assign
        }

        if (userValue == "1")
        {
            message = "You win a Coke";
        }
        else if (userValue == "2")
        {
            message = "You win a Diet Coke";
        }
        else if (userValue == "3")
        {
            message = "You win a Apple Juice";
        }
        Console.WriteLine(message);
        Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

有关更多示例用法,请参阅Console.ReadLine上的 MSDN .