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)
}
}
}
}
}