C# 试图使退出序列仅在给出正确输入时进行

C# 试图使退出序列仅在给出正确输入时进行,c#,C#,我很难创建一个循环来请求用户输入,如果输入不是Y或N,则重新提示用户反复输入,直到他们给出正确的输入 while (quitOrContinue != "Y"|"N")//cant use "Y"/"N" in the same line, how do I phrase this line? Console.Write("\nWould you like to process another set of bowling scores?"); Console.WriteLine("\nPres

我很难创建一个循环来请求用户输入,如果输入不是Y或N,则重新提示用户反复输入,直到他们给出正确的输入

while (quitOrContinue != "Y"|"N")//cant use "Y"/"N" in the same line, how do I phrase this line?
Console.Write("\nWould you like to process another set of bowling scores?");
Console.WriteLine("\nPress 'Y' to process another set or 'N' to exit the program");

Console.Clear();// this needs to happen if the input to run again is "Y"
为什么不使用循环呢

string input = null;
while((input = Console.ReadLine()) != "Y" || input != "N")
{
    Console.WriteLine("Invalid value, please try again:");
}

这里的表达式为input=Console.ReadLine!=Y | |输入!=N将在循环运行之前和每次之后进行评估。它基本上从输入流中读取一行并将其分配给输入变量,然后检查它是否为Y或N。它执行循环体并再次计算表达式并请求输入,直到条件满足。您可以使用Console.Read方法读取一个字符,但它返回int,因此您需要将其转换为char。

好,首先,您实际上根本没有从用户那里获取任何输入。您可以使用Console.WriteLine从用户那里输出您想要的任何类型的指令,但是您必须以某种方式实际捕获它们

要获取输入,必须使用Console.Read,并且必须使用条件块来检查它们的输入。您应该将代码包装在引用sentinel值的while循环中:

bool userIsDone = false;
Console.Write("\nWould you like to process...");
while (!userIsDone)
{
    string userInput = Console.ReadLine();
    // ...
    if (userInput == "Y")
    {
        // process another set here
        Console.WriteLine("\nWould you like to process...");
    }
    else if (userInput == "N")
    {
        // exit your program
    }
    else
    {
        Console.WriteLine("That input is invalid.");
    }
}

另外,关于上面的代码,您应该将循环中的元素包装在{}中,|是按位OR,而不是逻辑OR。在这种情况下,我99%想要的逻辑or是| |,逻辑and是&。

我在您的问题中没有看到任何循环代码….Console.Read返回一个int@Selman22是的,我现在正在编辑它,还有一些其他的东西。当我这样做的时候,程序不会退出,如果我使用下面的if/else,它仍然不会退出。当输入N时,如何使其退出,或当输入Y时,如何使其返回顶部循环后,检查输入值!