Необработанное исключение: System.FormatException: входная строка была в неправильном формате - PullRequest
0 голосов
/ 14 августа 2011

Я пытаюсь заставить эту маленькую программу оценки фильмов работать должным образом, и все идет хорошо, пока я не начну запрашивать оценки, которые введет рецензент.Это позволяет мне оценивать оба действия хорошо, но как только я нажму кнопку ввода, чтобы оценить музыку, она перейдет к пустой строке вместо запроса на следующий ввод.Единственный способ обойти это, мне кажется, ввести значение дважды.

спасибо

Console.WriteLine("Rate the following out of 5");
Console.Write("Acting > ");
acting_rating = int.Parse(Console.ReadLine());

Console.Write("Music > ");
Console.ReadLine();
music_rating = int.Parse(Console.ReadLine());

Console.Write("Cinematography > ");
Console.ReadLine();
cinematography_rating = int.Parse(Console.ReadLine());

Console.Write("Plot > ");
Console.ReadLine();
plot_rating = int.Parse(Console.ReadLine());

Console.Write("Duration > ");
Console.ReadLine();
duration_rating = int.Parse(Console.ReadLine());

Ответы [ 2 ]

2 голосов
/ 14 августа 2011

вы звоните Console.ReadLine(); один раз слишком часто ... просто удалите Console.ReadLine(); между Console.Write и int.Parse.

Хотя ЕСЛИ пользователь вводит гимн неправильно - как слово вместочисло - вы все равно получите исключение ... Для правильной обработки используйте попробуйте блок catch и / или TryParse.

1 голос
/ 14 августа 2011

Не считая действующего, у вас всегда есть два Console.ReadLine();, т.е.:

Console.Write("Music > ");  // write Music > 
Console.ReadLine();         // read the user input (and throw it away)
music_rating = int.Parse(Console.ReadLine()); // read the user input again and parse it

Удалите один оператор Console.ReadLine(); и все должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...