C# 如何防止无效用户输入导致崩溃?
我遇到了一个问题,由于用户的输入没有遵循变量数据类型,我的程序崩溃了。我要求用户做的是为电影注册一些数据。当我们到达电影发行年份时,如果用户输入不遵循整数数据类型,它就会崩溃 我当时还想做的是确保int release的值在1000到2050之间 我希望发生的事情: 用户被迫输入1000到2050之间的值。如果输入了不同的值,将要求他重试 我认为守则应该是相关的:C# 如何防止无效用户输入导致崩溃?,c#,C#,我遇到了一个问题,由于用户的输入没有遵循变量数据类型,我的程序崩溃了。我要求用户做的是为电影注册一些数据。当我们到达电影发行年份时,如果用户输入不遵循整数数据类型,它就会崩溃 我当时还想做的是确保int release的值在1000到2050之间 我希望发生的事情: 用户被迫输入1000到2050之间的值。如果输入了不同的值,将要求他重试 我认为守则应该是相关的: public static void RegisterMovie() { Console.Write("An
public static void RegisterMovie()
{
Console.Write("Ange titel: ");
string title = Console.ReadLine();
Console.Write("Ange genre: ");
string genre = Console.ReadLine();
Console.Write("Ange release: ");
int release = int.Parse(Console.ReadLine());
Console.Write("Ange actor: ");
string actor = Console.ReadLine();
Console.Write("Ange director: ");
string director = Console.ReadLine();
Movie m = CreateMovie(title, genre, release, actor, director);
AddMovie(m);
}
感谢您的帮助。使用Int32.TryParse()
并在它不是整数时处理它。返回值指示操作是否成功。有关更多信息,请参阅 使用
Int32.TryParse()
处理非整数的情况。返回值指示操作是否成功。有关更多信息,请参阅 改用TryParse
Console.Write("Ange release: ");
int release;
while (!int.TryParse(Console.ReadLine(), out release))
{
Console.Write("Ange release: ");
}
改用胰蛋白酶
Console.Write("Ange release: ");
int release;
while (!int.TryParse(Console.ReadLine(), out release))
{
Console.Write("Ange release: ");
}
bool ok=false;
int释放;
而(!ok)
{
Console.Write(“Ange release:”);
ok=int.TryParse(Console.ReadLine(),out release);
ok=ok&(release>=1000)&&(releasebool ok=false;
int释放;
而(!ok)
{
Console.Write(“Ange release:”);
ok=int.TryParse(Console.ReadLine(),out release);
ok=ok&&(release>=1000)&&(release使用while循环和int.TryParse()。这应该可以让您开始。使用while循环和int.TryParse()。这应该可以让您开始。实际上,我会在这里使用do..while循环。do{…}while(!ok)
对于应该至少执行一次的东西,我感觉更自然。实际上,我会在这里使用do..while循环。do{…}while(!ok);
对于应该至少执行一次的东西,我感觉更自然。