如何防止无效用户输入崩溃?

时间:2013-08-04 10:24:00

标签: c#

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

我当时试图做的是确保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);
    }

感谢您帮助我。

3 个答案:

答案 0 :(得分:3)

bool ok = false;
int release;
while (!ok)
 {
   Console.Write("Ange release: ");
   ok = int.TryParse(Console.ReadLine(), out release);
   ok = ok && (release >= 1000) && (release <= 2050);
 }

答案 1 :(得分:2)

使用Int32.TryParse()并处理不是整数的情况。返回值表示操作是否成功 有关更多信息,请参阅 http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx

答案 2 :(得分:1)

改用TryParse。

Console.Write("Ange release: ");
int release;
while (!int.TryParse(Console.ReadLine(), out release))
{
    Console.Write("Ange release: ");
}