Reputation: 169
I have encountered a problem where my program crashes due to the input of the user not following the variable data type. What I am asking the user to do is register some data for a movie. When we reach the year of release for the movie, it crashes, should the user input not follow the integer data type.
What I then also was trying to do is to make sure the value of int release is a number between 1000 and 2050.
What I want to have happen: The user is forced to enter a value between 1000 and 2050. Should a different value be entered, he is asked to try again.
The code I believe should be relevant:
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);
}
Thanks for helping me out.
Upvotes: 1
Views: 1564
Reputation: 23324
bool ok = false;
int release;
while (!ok)
{
Console.Write("Ange release: ");
ok = int.TryParse(Console.ReadLine(), out release);
ok = ok && (release >= 1000) && (release <= 2050);
}
Upvotes: 3
Reputation: 8128
Use Int32.TryParse()
and handle the case when it's not an integer. The return value indicates whether the operation succeeded.
For more information see
http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx
Upvotes: 2
Reputation: 21231
Use TryParse instead.
Console.Write("Ange release: ");
int release;
while (!int.TryParse(Console.ReadLine(), out release))
{
Console.Write("Ange release: ");
}
Upvotes: 1