C# 如何防止无效用户输入导致崩溃?

C# 如何防止无效用户输入导致崩溃?,c#,C#,我遇到了一个问题,由于用户的输入没有遵循变量数据类型,我的程序崩溃了。我要求用户做的是为电影注册一些数据。当我们到达电影发行年份时,如果用户输入不遵循整数数据类型,它就会崩溃 我当时还想做的是确保int release的值在1000到2050之间 我希望发生的事情: 用户被迫输入1000到2050之间的值。如果输入了不同的值,将要求他重试 我认为守则应该是相关的: public static void RegisterMovie() { Console.Write("An

我遇到了一个问题,由于用户的输入没有遵循变量数据类型,我的程序崩溃了。我要求用户做的是为电影注册一些数据。当我们到达电影发行年份时,如果用户输入不遵循整数数据类型,它就会崩溃

我当时还想做的是确保int release的值在1000到2050之间

我希望发生的事情: 用户被迫输入1000到2050之间的值。如果输入了不同的值,将要求他重试

我认为守则应该是相关的:

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)&&(release
bool 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);
对于应该至少执行一次的东西,我感觉更自然。