Урок 2.2 — Ввод и типы данных
Научимся получать данные от пользователя, преобразовывать строки в числа и делать ввод безопасным.
До этого момента наши программы только выводили информацию. Но программа, которая не умеет слушать пользователя — как телевизор: вещает, но не слышит ответа. Сегодня мы дадим программам уши — научим их принимать ввод от пользователя.
Ввод данных: Console.ReadLine()
Console.ReadLine() — это метод, который читает строку текста, введённую пользователем в консоли. Программа приостанавливается и ждёт, пока пользователь нажмёт Enter.
Console.Write("Введите ваше имя: ");
string name = Console.ReadLine();
Console.WriteLine($"Привет, {name}!");
Что здесь происходит:
Console.Write()выводит приглашение (без переноса строки)Console.ReadLine()ждёт, пока пользователь введёт текст и нажмёт Enter- Введённый текст сохраняется в переменную
name(всегда string!) - Программа выводит приветствие с именем пользователя
💡 Console.ReadLine() всегда возвращает строку (string). Даже если пользователь ввёл число — это будет строка "25", а не число 25. Чтобы работать с числом, строку нужно преобразовать.
Преобразование типов
Пользователь ввёл "25" — это строка. Чтобы сложить с другим числом, нужно превратить её в int. В C# есть несколько способов:
1. Convert.ToInt32() — универсальный способ
Может преобразовывать разные типы: string, double, и даже bool в int.
Console.Write("Введите возраст: ");
string input = Console.ReadLine();
int age = Convert.ToInt32(input);
Console.Write("Введите цену: ");
double price = Convert.ToDouble(Console.ReadLine());
2. int.Parse() / double.Parse() — прямой способ
Работает только со строками. Если строка не является числом — выбрасывает исключение.
string text = "42";
int number = int.Parse(text); // → 42
string piText = "3.14";
double pi = double.Parse(piText); // → 3.14
// ❌ int.Parse("abc") — ОШИБКА! Выбросит FormatException
3. int.TryParse() — безопасный способ
Пытается преобразовать строку в число. Если не получается — возвращает false и не выбрасывает исключение. Это лучший способ для реальных программ.
Console.Write("Введите число: ");
string input = Console.ReadLine();
bool success = int.TryParse(input, out int number);
if (success)
{
Console.WriteLine($"Вы ввели число {number}");
}
else
{
Console.WriteLine("Это не число!");
}
⚠️ out int number — это модификатор out. TryParse не возвращает число, а кладёт его в переменную, переданную с ключевым словом out. Результат операции (успех/неудача) возвращается как bool. Мы подробно разберём out в уроке про параметры методов.
Таблица преобразований:
Проверка через TryParse
TryParse — это самый безопасный способ преобразования. Он не «падает» с ошибкой, а возвращает true или false. Давай рассмотрим реальный пример — калькулятор возраста:
Console.Write("Введите год вашего рождения: ");
string input = Console.ReadLine();
if (int.TryParse(input, out int birthYear))
{
int currentYear = 2026;
int age = currentYear - birthYear;
Console.WriteLine($"Вам {age} лет (или будет в этом году).");
}
else
{
Console.WriteLine("Ошибка! Введите число, а не текст.");
}
💡 Используй TryParse всегда, когда ввод поступает от пользователя. Люди ошибаются — вводят буквы вместо цифр. TryParse превратит эту ошибку в обычное условие, а не в аварию программы.
Практика — складываем два числа
Напишем программу, которая просит два числа и выводит их сумму:
using System;
class Program
{
static void Main()
{
Console.Write("Введите первое число: ");
string firstInput = Console.ReadLine();
Console.Write("Введите второе число: ");
string secondInput = Console.ReadLine();
if (int.TryParse(firstInput, out int a) &&
int.TryParse(secondInput, out int b))
{
int sum = a + b;
Console.WriteLine($"{a} + {b} = {sum}");
}
else
{
Console.WriteLine("Одно из значений — не число!");
}
}
}
&& — логический оператор «И». Мы проверяем оба условия в одной строке. Если хоть один TryParse вернул false — сумма не считается. Мы изучим логические операторы подробнее в уроке 3.4.Что важно запомнить
Тест: 2.2: Ввод и типы данных
5 вопросов