1. Вступ
До цього моменту ми писали програми, схожі на радіо: вони щось повідомляли, та ніяк не реагували на ваші слова. Звісно, так далеко не заїдете! Мета більшості програм — робити щось корисне для користувача. Тож дуже часто потрібно, щоб користувач міг вводити дані з клавіатури.
Наприклад:
- Калькулятор очікує, що ви введете числа й операцію.
- Форми на сайті очікують ваші ПІБ і адресу електронної пошти, щоб обробити заявку.
- Комп’ютерні ігри запитують імʼя гравця.
Сьогодні ми дамо нашому застосунку мікрофон! Або вуха — як вам більше подобається :) Готові? Поїхали.
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().
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ