如果用户输入错误则循环程序

Loop program if user enters wrong input

我刚开始学习 C#,while 循环让我很困惑。与 Java 不同,如果用户输入了无效输入,我可以使用 while 循环来循环程序,它在 C# 中的行为方式不同。

using System;

namespace first {
    class Program {
        static void Main(string[] args) {
            Console.WriteLine("Hi! What is your name");
            string userName = Console.ReadLine();
            Console.WriteLine("oh! you are:" + userName);
            Console.WriteLine("let play a game");

            string answer="Y";
            while (answer == "Y") {
                Random random = new Random();
                int correntNumber = random.Next(1, 2);
                int guess = 0;

                Console.WriteLine("Guess a number");
                while (guess != correntNumber) {
                    string userGuess = Console.ReadLine();

                    //validate input method 1
                    try {
                        guess = int.Parse(userGuess);
                    } catch (Exception e) {
                        Console.WriteLine("Invalid inout", e);
                    }

                    //validate input method 2
                    //if(!int.TryParse(userGuess, out guess)) {
                    //    Console.WriteLine("invalid input");
                    //}

                    if (guess != correntNumber) {
                        Console.WriteLine("try again!");
                    }
                }

                Console.WriteLine("Yes! corrector");
                Console.WriteLine("Play again?");

                //string answer;
                answer = Console.ReadLine().ToUpper();
                if(answer == "Y") {
                    continue;
                } else if (answer == "N") {
                    Console.WriteLine("bye");
                    return;
                } else if (answer != "Y" || answer != "N") {
                    Console.WriteLine("y or n");
                    answer = Console.ReadLine().ToUpper();
                    continue;
                }
            }
        }
    }
}

当我输入 y 或 n 以外的值时,会出现消息,Console.WriteLine("Y or n only");,但游戏会重新启动,但它不应该重新启动。

很抱歉,这是一个简单而愚蠢的问题,但我无法指出我哪里出错了。

问题在于,在向用户打印“y or n only”消息后,您接受了输入,但实际上并没有对其进行任何操作 因此无论输入如何,循环都会重新启动,要解决此问题,您可以用此代码替换最后一个 if 部分

while(answer != 'Y' && answer != 'N'){
                    Console.WriteLine("y or n only");
                    answer = Convert.ToChar(Console.ReadLine().ToUpper());
                }
                 if(answer == 'Y')
            {
                continue;

            }
            else if(answer == 'N')
            {
                Console.WriteLine("goodbye");
                return;
            }

所以在你读完他的第一个输入答案重复或否后,你检查它是否是一个有效的输入,如果不是你继续问他“y or n only”直到他输入“Y”或“N”,然后你处理这个答案,看它在 if 部分是“Y”还是“N”