1

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

然后我还试图做的是确保 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);
    }

谢谢你的协助。

4

3 回答 3

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);
 }
于 2013-08-04T10:29:52.953 回答
2

Int32.TryParse()当它不是整数时使用和处理大小写。返回值表示操作是否成功。
有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx

于 2013-08-04T10:27:50.440 回答
1

请改用 TryParse。

Console.Write("Ange release: ");
int release;
while (!int.TryParse(Console.ReadLine(), out release))
{
    Console.Write("Ange release: ");
}
于 2013-08-04T10:29:02.773 回答