JavaRush /Курсы /C# SELF /Ввод с клавиатуры

Ввод с клавиатуры

C# SELF
2 уровень , 5 лекция
Открыта

1. Введение

До этого момента мы писали программы, которые были похожи на радио: они что-то сообщали, но никак не реагировали на ваши слова. Конечно, так далеко не уедешь! Цель большинства программ — сделать что-то полезное для пользователя. Поэтому очень часто нужно, чтобы пользователь мог вводить данные с клавиатуры.

Например:

  • Калькулятор ожидает, что вы введёте числа и операцию.
  • Формы на сайте ждут ваши ФИО, e-mail и почту, чтобы обработать заявку.
  • Компьютерные игры спрашивают имя игрока.

Сегодня мы дадим нашему приложению микрофон! Ну или уши, кому как нравится :) Готовы? Поехали.

2. Знакомство с Console.ReadLine()

Console.ReadLine() — это функция (или "команда"), позволяющая программе получить данные, которые пользователь введет на клавиатуре.

Когда выполнение программы доходит до команды Console.ReadLine(), программа останавливается и… терпеливо ждёт, пока вы не напечатаете что-то и не нажмёте Enter. Всё, что вы введёте до нажатия Enter, будет считаться одной строкой текста. Эта строка возвращается в программу — как будто пользователь передал вам записку через окошко.

Базовый пример

// Спросим пользователя имя и поприветствуем его
Console.WriteLine("Как тебя зовут?");
string userName = Console.ReadLine(); 				// Здесь программа ждёт ввода!
    
Console.WriteLine("Привет, " + userName + "!");

Как это работает:

  • На экране появляется: Как тебя зовут?
  • Вы вводите, например, Андрей и нажимаете Enter.
  • Переменная userName получает значение "Андрей".
  • На экран выводится: Привет, Андрей!

Сразу замечание: всё, что возвращает Console.ReadLine()ВСЕГДА строка (тип string). Даже если пользователь ввёл число, оно всё равно будет строкой!

3. Примеры

Давайте посмотрим, как используется Console.ReadLine() на практике.

Пример 1: вводим имя пользователя

Console.WriteLine("Введите ваше имя:");
string name = Console.ReadLine();
Console.WriteLine("Добро пожаловать, " + name + "!");

Пример 2: выводим результат в одной строке

С помощью оператора + вы можете сразу объединить текст и результат ввода.

Console.Write("Ваш любимый цвет: ");
string color = Console.ReadLine();
Console.WriteLine("Круто! Ваш любимый цвет - " + color + ".");
Заметьте:

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

Пример 3: несколько вводов подряд

Давайте создадим мини-анкету:

Console.Write("Как вас зовут? ");
string name = Console.ReadLine();

Console.Write("Сколько вам лет? ");
string age = Console.ReadLine(); // пока как строка

Console.WriteLine("Вас зовут " + name + ", и вам " + age + " лет.");

Вы увидите:

Как вас зовут? Вика
Сколько вам лет? 23
Вас зовут Вика, и вам 23 лет.

4. Ввод числовых данных: конвертация

Здесь кроется популярная ловушка для новичков! Console.ReadLine() всегда возвращает строку, даже если пользователь ввёл 123.

Если вы хотите получить число, необходимо превратить строку в нужный числовой тип (например, int). Для этого в C# используют методы преобразования, например, int.Parse() или Convert.ToInt32() — мы уже говорили об этом в прошлой лекции.

Пример: спрашиваем возраст

Console.Write("Сколько вам лет? ");
string input = Console.ReadLine();         // input = "27", например
int age = int.Parse(input);                // Превращаем строку "27" в число 27
Console.WriteLine("Через год вам будет " + (age + 1));
Внимание:

если пользователь введёт не число, программа выбросит ошибку (FormatException). Позже мы научимся делать более надёжный код, но для простых экспериментов этого достаточно.

5. Ошибки, с которыми вы точно столкнётесь

Забыли преобразовать к числу:

Попытка использовать значение из Console.ReadLine() как число без преобразования.

string input = Console.ReadLine();
int sum = input + 5; // Ошибка! Строку нельзя складывать с числом.

Нужно преобразовать в int:

int sum = int.Parse(input) + 5;

Забыли объявить переменную:

name = Console.ReadLine(); // Ошибка! Не объявлена переменная name.

Надо сначала объявить: string name = Console.ReadLine();

Перепутан порядок ввода и вывода:

Новички часто делают нелепые ошибки. Но профессионалы тоже их делают. Просто с умными лицами :)

string name = Console.ReadLine();
Console.WriteLine("Введите имя: " + name); // Сначала надо спросить, потом прочитать!

Правильный порядок:

Console.Write("Введите имя: ");
string name = Console.ReadLine();
Console.WriteLine("Привет, " + name);

Полезное примечание

Даже если вы используете Console.ReadLine() без вывода вопроса (например, просто string x = Console.ReadLine();), программа будет ЖДАТЬ ввода. Но пользователь не поймёт, что именно нужно ввести! Поэтому всегда предлагайте ему чёткую подсказку с помощью Console.Write() или Console.WriteLine().

2
Задача
C# SELF, 2 уровень, 5 лекция
Недоступна
Приветствие пользователя
Приветствие пользователя
2
Задача
C# SELF, 2 уровень, 5 лекция
Недоступна
Именной калькулятор возраста
Именной калькулятор возраста
1
Опрос
Знакомство с типами int и string, 2 уровень, 5 лекция
Недоступен
Знакомство с типами int и string
Знакомство с типами int и string
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Mirunner Уровень 1
20 июля 2025
Console.ReadLine ничего не ждет. Браузер Mozilla 140.0.4..
Ruvino Уровень 8
21 июля 2025
Там же вроде окошко в WebIDE появляется с "Input data", вот в неё надо перед запуском программы вводить данные. В реальности в том же Visual Studio программа будет покорно ждать ввода от пользователя.