修复了,但现在当它到达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);
}
}
}
}发布于 2021-03-04 14:29:43
不要将int.TryParse(poggers2, out pog2)的值赋给pog2。因为pog2是int。int.tryParse返回bool。
根据user @ 41686d6564的建议,您不需要此检查poggers2.All(char.IsDigit)。
发布于 2021-03-04 17:20:29
在第29行使用TryParse(),而不是普通的Parse()。
解析()
直接返回值,但如果输入无效(字符串无法解析为所需类型),则抛出异常。
TryParse()
这不会抛出异常,但如果字符串不能被解析,则只返回false。解析后的值将通过out标记指定的变量返回,如果您得到的是true返回。
int result;
// This will throw an exception
result = int.Parse("Hello");
// This will just return false
if (int.TryParse("Hello", out result)
Debug.WriteLine("Result now has a valid int value!");
else
Debug.WriteLine("Sorry, could not parse the text");使用TryParse时,您可以使代码更具可读性,并且不需要在解析之前验证字符串(poggers2.All(char.IsDigit)。
https://stackoverflow.com/questions/66469626
复制相似问题