C# 循环忽略条件语句

C# Loop Ignores Conditional Statements

我在 class 程序中的一个方法中创建了一个骰子模拟器。

并且在 Main 方法中,我试图创建一个循环来询问用户 he/she 是否想再次播放。

出于某种原因,循环完全忽略了我的条件语句,我不知道为什么。

我输入数字或任何乱码都没关系,它仍然会重新启动游戏。

唯一有效的是当我输入 "N" 或 "n" 退出时。

        string alt;
        do
        {
            GameLogic();

            Console.WriteLine("Play again?");
            Console.WriteLine("[Y]es | [N]o");

            alt = Console.ReadLine();
            alt.ToLower();

            if (alt == "Y" || alt == "y")
            {
                Console.Clear();
                GameLogic();
            }
            else if (alt == "N" || alt == "n")
            {
                break;
            }
            else
            {
                Console.WriteLine("Invalid input!");
            }
        } while (alt != "N" || alt != "n");

        Console.WriteLine("\nPress any key to quit...");
        Console.ReadKey();

我希望它按照条件要求它做。如果您输入 "Y, y" 或 "N, n" 以外的任何其他内容,它应该显示消息 "Invalid input!".

只有输入"Y"或"y"才会重新开始游戏。

你的逻辑有点不对。

试试这个代码:

        string alt;
        bool firstRun = true;
        do
        {
            if (firstRun)
            {
                firstRun = false;
                GameLogic();
            }

            Console.WriteLine("Play again?");
            Console.WriteLine("[Y]es | [N]o");

            alt = Console.ReadLine();
            alt.ToLower();

            if (alt == "Y" || alt == "y")
            {
                Console.Clear();
                GameLogic();
            }
            else if (alt == "N" || alt == "n")
            {
                break;
            }
            else
            {
                Console.WriteLine("Invalid input!");             
            }
        } while (alt != "N" || alt != "n");

        Console.WriteLine("\nPress any key to quit...");
        Console.ReadKey();

基本上,GameLogic 会在您的 do while 循环开始时执行。

所以你必须确保它第一次执行然后只有当人选择它才会执行第二次。

我以某种方式解决了它...我不得不移动 GameLogic();在循环之外。