ReadLine без ввода значения говорит о том, что они не корректны. В чём проблема?

Пишу простую программку по выводу чётных или не чётных значений от min до max. Программа написана, но вылезает ошибка о некорректности введённого значения, когда доходит до считывания значения min выходит ошибка: "Input string was not in a correct format". Хотя никакие значения не вводятся(он просто не даёт их ввести с разу выводит ошибку). Прошу помощи и разъяснений. Весь код:

using System;

namespace НечетныеЧисла
{
    class Nums
    {
        int min;
        int max;


        public void Nechet()
        {
            int k = min;
            while (k < max)
            {
                if ((k % 2) == 0)
                {
                    k += 1;
                }
                else
                {
                    Console.Write(k + ", ");
                    k++;
                }
            }
        }
        public void Chetn()
        {
            int k = min;
            while (k < max)
            {
                if ((k % 2) == 0)
                {
                    Console.Write(k + ", ");
                    k++;

                }
                else
                {
                    k += 1;
                }
            }
        }
        class Program
        {
            static void Main()
            {
                Char flag_;
                int k;

                Console.Write("Что бы выполнить программу введите Y, для завершения работы введите N: ");
                flag_ =Convert.ToChar(Console.Read());
                while (flag_ != 'N')
                {
                    Nums ch = new Nums();
                    try
                    {
                        Console.WriteLine("Введите минимальное число: ");
                        ch.min = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("Введите максимальное число: ");
                        ch.max = Convert.ToInt32(Console.ReadLine());
                    }
                    catch(Exception e)
                    {
                        Console.WriteLine(e.Message);    
                    }
                    Console.Write("Для ряда нечётных чисел введите 1, для чётных 2: ");
                    k = Convert.ToInt32(Console.ReadLine());
                    switch (k)
                    {
                        case 1:
                            ch.Nechet();
                            break;
                        case 2:
                            ch.Chetn();
                            break;
                    }
                    Console.Write("Что бы продолжить работу введите Y, для завершения работы введите N: ");
                    flag_ = Convert.ToChar(Console.Read());
                }
                Console.WriteLine("Спасибо за работу!");
                Console.ReadLine();
            }
        }
    }
}

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

Автор решения: Qwertiy

Потому что когда ты считываешь символы через Read, хвост строки вместе с переводом строки остаётся в буфере (если ты его не прочитал). Когда ты вызываешь чтение строки, то считывается этот буфер до перевода строки (и он сам). Соответственно, у тебя считывается либо мусор, либо пустая строка. Вставь ещё один ReadLine и проигнорируй его результат.

→ Ссылка