Почему-то повторяется выполнение строчки кода С#

Я нубяра, так что извините, если вопрос простой, но больше спросить негде, ибо учусь сам. Суть такая - простое задание класса, с циклом for() чтобы не допустить некорректное введение пола ученика (цикл бесконечный пока не ввели f или m). И всё работает, но почему-то строчка выводится трижды, и я не понимаю, почему…

			Human student = new Human();
			Console.WriteLine("Student's name: ");
			student.name = Console.ReadLine();
			Console.WriteLine("Student's age: ");
			student.age = Convert.ToInt32(Console.ReadLine());
			for (;student.sex != 'm' && student.sex != 'f';)
				{
				Console.WriteLine("Student's gender(f/m): ");
				student.sex = Convert.ToChar(Console.Read());
				}
			student.WriteProp();
			Console.ReadKey();

1

После ввода символа s и нажатия Enter из входного потока с помощью Console.Read() можно будет прочитать символы s, \r, \n. Из-за них получается лишний вывод.

1 лайк

Это особенность Console.Read() как метода? В ReadLine никаких лишних символов вроде не передаётся.

Скорее, это особенность ReadLine (Console.ReadLine Метод (System) | Microsoft Learn), который читает до завершающих символов, но не включает их в результирующую строку.

1 лайк