2013-08-04 79 views
0

我遇到了一個問題,由於用戶輸入不符合變量數據類型,導致我的程序崩潰。我要求用戶做的是爲電影註冊一些數據。當我們達到電影發佈年份時,如果用戶輸入不符合整數數據類型,則會崩潰。如何防止用戶輸入無效導致崩潰?

我隨後也試圖做的是要確保INT發佈的值是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

使用while循環和int.TryParse()。這應該讓你開始。 –

回答

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); 
} 
+0

其實,我會在這裏使用do..while循環。 'do {...} while(!ok);'對於我來說,對於至少應該執行一次的事情來說,我感覺更自然。 –

1

使用TryParse代替。

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