System.FormatException: входная строка не была в правильном формате от int.Parse - PullRequest
0 голосов
/ 27 апреля 2020
try
{
    for (int i = 0; i < 4; i++)
    {
        playerGuess[i] = int.Parse(Console.ReadLine()); //says this is the error
    }
}
catch (Exception ex)
{
    Console.WriteLine("{0} Exception caught", ex);
    Console.Read();
}

Я запускаю этот код, и по какой-то причине он выдает следующие ошибки:

   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.Number.ParseInt32(ReadOnlySpan`1 value, NumberStyles styles, NumberFormatInfo info)
   at System.Convert.ToInt32(String value)

Я пробовал исправления, которые я видел в другом потоке, но я не могу получить их на работу. есть идеи?

1 Ответ

0 голосов
/ 27 апреля 2020

int.Parse() завершится с этим исключением, если указанное вами значение не может быть преобразовано в целое число, и, как написано, у вас нет проверок на строку, считываемую из консоли, чтобы убедиться, что это так до передачи это к методу.

Вместо этого вы можете использовать int.TryParse(), что дает вам немного больше контроля над обработкой ошибки, возвращая логическое значение, указывающее на успех. Вместо этого вы можете отправить сообщение об ошибке и попросить пользователя повторить отправку.

string input = Console.ReadLine();
int result;

if(int.TryParse(input, out result)) // TryParse returns a boolean showing whether the parse worked
{
   // then perform your behavior safely
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...