Метод Console.Read возвращает неверное значение числа

сделал маленькую игру по угадыванию чисел но загвоздка в том то что рандом выдает большие числа чем прописаны в условий #

введите сюда описание изображениявведите сюда описание изображения


Ответы (1 шт):

Автор решения: Александр

Согласно документации метод Consol.Read() возвращает

"следующий символ из входного потока или значение минус единица (-1), если доступных для чтения символов не осталось."

При чем эта функция возвращает не сам символ, а его код (тип возвращаемого значение - int)

В вашем случае вы ввели символ 1 с кодом 49 по стандарту ASCII, с которым совместима кодировка UTF-16, используемая по умолчанию в .NET. Потому переменная y вас равна 49.

Как решить?

Вместо Console.Read() используйте Console.Readline() и метод int.Parse либо int.TryParse для получения валидного числа, например, так:

int y;
var str = Console.ReadLine();
if (!int.TryParse(str, out y)) return;
→ Ссылка