Console.Read() не позволяет мне вводить что-либо во второй раз

Я решаю проблему сравнения двух чисел с плавающей точкой и хочу, чтобы пользователь ввел желаемые значения. Поэтому я написал следующий код:

    Console.WriteLine("Enter first number: ");
    double num1 = Console.Read();
    Console.WriteLine("Enter second number: ");
    double num2 = Console.Read();

К сожалению, я могу ввести только первый номер. После того, как консоль выдает "Введите первое число: ", и я ввожу какой-то номер, он просто пропускает до конца и не позволяет мне вводить второе число... Есть мысли по этому поводу?

3 ответа

Решение

Это поведение по умолчанию Console.Read (). Из ответа о разнице между Console.Read () и Console.ReadLine ()?

Console.Read () в основном читает символ, поэтому, если вы находитесь на консоли и нажимаете клавишу, консоль закроется. [...]

Вы должны использовать Console.ReadLine(); вместо.

Console.WriteLine("Enter first number: ");
double num1 = double.Parse(Console.ReadLine());
Console.WriteLine("Enter second number: ");
double num2 = double.Parse(Console.ReadLine());

Предполагается, что вы уже вводите \ n в качестве второго ввода. Если вы введете 2 числа в первом методе чтения. Затем он автоматически помечает 1 число в первом чтении и второе число во втором. Просто заменить на ReadLine() если вы хотите добиться поведения норамла,

Вместо этого попробуйте Console.ReadLine(). Console.Read читает только один символ

   Console.WriteLine("Enter first number: ");
   double num1 = double.Parse(Console.ReadLine());
   Console.WriteLine("Enter second number: ");
   double num2 = double.Parse(Console.ReadLine());

Или с помощью TryParse:

   Console.WriteLine("Enter first number: ");
   double num1, num2;
   double.TryParse(Console.ReadLine(), out num1); // double.TryParse() method also returns a bool, so you could flag an error to the user here
   Console.WriteLine("Enter second number: ");
   double.TryParse(Console.ReadLine(), out num2);
Другие вопросы по тегам