C# 我没有按enter键,但ReadLine()说我按了(意外地使您无法回答旧的问题,因此重新发布)

C# 我没有按enter键,但ReadLine()说我按了(意外地使您无法回答旧的问题,因此重新发布),c#,C#,已修复,但现在它在到达Main()时自动按enter键东西,我不能及时输入任何东西。有人知道怎么了吗 using System; using System.Linq; namespace Bruh { class Program { static void Main() { int pog = 0; int pog2 = 0; Random r = new Random();

已修复,但现在它在到达
Main()时自动按enter键东西,我不能及时输入任何东西。有人知道怎么了吗

using System;
using System.Linq;

namespace Bruh
{
    class Program
    {
        static void Main()
        {
            int pog = 0;
            int pog2 = 0;
            Random r = new Random();
            Console.WriteLine("Input a whole number");
            string poggers = Console.ReadLine();
            if (int.TryParse(poggers, out pog))
            {
                pog = int.Parse(poggers);
            }
            else
            {
                Console.WriteLine("ERROR: Not a number. Please input a number and not letters.");
                Console.Read();
                System.Environment.Exit(1);
            }
            Console.WriteLine("Input a number higher than the previous");
            string poggers2 = Console.ReadLine();
            if (int.TryParse(poggers2, out pog2))
            {
                pog2 = int.Parse(poggers2);
            }
            else
            {
                Console.WriteLine("ERROR: Not a number. Please input a number and not letters.");
                Console.Read();
                System.Environment.Exit(1);
            }
            int genRand = r.Next(pog, pog2);
            Console.WriteLine("This number was randomly generated between " + pog + " and " + pog2 + " and we got: " + genRand);
            Console.Read();
            Console.WriteLine("Would you like to try again? Y/N");
            ConsoleKeyInfo answer = Console.ReadKey();
            if (answer.KeyChar == 'y' || answer.KeyChar == 'Y')
            {
                Console.WriteLine("\n");
                Main();
            }
            else if (answer.KeyChar == 'n' || answer.KeyChar == 'N')
            {
                System.Environment.Exit(1);
            }
            else
            {
                Console.WriteLine("ERROR: Y/N not any other character");
                Console.Read();
                System.Environment.Exit(1);
            }
        }
    }
}

我已经将您的代码修改成更像C的东西,比如:-)-请在下面查找

亮点:

  • 您可以正确地使用
    int.TryParse()
    ,但要再次进行转换 在true代码块内,使用
    int.Parse()
  • 无需调用
    System.Environment.Exit(1)
    要终止程序,就让它结束
  • 调用
    main()
    实际上是一个递归调用——方法(函数)自己调用它。有时可用,但我经常导致StackOverflow异常。在这种情况下,你会有一些奇怪的行为

此外,如果这违反了任何规则或任何东西,我也很抱歉,但我对该网站非常陌生,不太了解:(请给出你的变量名称,以便人们能够理解你的意图。同样,这样命名你的变量也不会让你在创建更复杂的东西方面走得更远。哪一行确实不符合预期?@Dominik抱歉,我不太擅长编码。我真的不知道它发生在哪里,但它发生在en附近。)我假设是因为如果我去掉了
ConsoleKeyInfo answer=Console.ReadKey();
和所有的if语句,之后只剩下
Main()
左侧,它工作得非常好。编辑:等等,不,这不奇怪,它以前工作过。嘿,伙计,请看一下,如果可能的话,来改进你的问题,帮助我们理解你的问题。(这是我默认的复制粘贴,请阅读,它将帮助你获得答案:)此外,如果您在调试代码方面遇到困难,我建议您阅读本主题。它确实有助于理解“发生了什么”。但是有很多很好的指南可供选择。谢谢您的帮助!
using System;

namespace Bruh2
{
    class Program
    {
        static void Main()
        {
            bool tryAgain = true;

            while (tryAgain)
            {
                int pog = 0;
                int pog2 = 0;
                Random r = new Random();

                Console.Write("Input a whole number: ");
                string poggers = Console.ReadLine();
                while (!int.TryParse(poggers, out pog))
                {
                    Console.WriteLine("ERROR: Not a number. Please input a number and not letters.");
                    poggers = Console.ReadLine();
                }

                Console.Write("Input a number higher than the previous: ");
                string poggers2 = Console.ReadLine();
                while (!int.TryParse(poggers2, out pog2))
                {
                    Console.WriteLine("ERROR: Not a number. Please input a number and not letters.");
                    poggers2 = Console.ReadLine();
                }

                int genRand = r.Next(pog, pog2);
                Console.WriteLine("This number was randomly generated between " + pog + " and " + pog2 + " and we got: " + genRand);
                Console.WriteLine();

                Console.WriteLine("Would you like to try again? Y/N");
                //ConsoleKeyInfo answer = Console.ReadKey();
                string answer = Console.ReadKey().KeyChar.ToString().ToLower();
                while (answer!="y" && answer!="n")
                {
                    Console.WriteLine("ERROR: Y/N not any other character");
                    answer = Console.ReadKey().ToString().ToLower();
                }
                if (answer == "n")
                {
                    tryAgain = false; // terminate the loop (and thereby the program)
                }
            }
        }
    }
}