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