Урок № 11. Ввод с клавиатуры. Преобразование типов данных


Получение данных от пользователя

Доброго времени суток! В этом уроке мы поговорим о том, как получать данные от пользователя, это очень важный момент для любой компьютерной программы. В принципе, приложение может получать информацию от пользователя (или внешнего мира) разными способами, например, через графический интерфейс пользователя (через различные поля ввода и т.п.), читать из файла, принимать по сети от удаленного источника, ну или как в нашем случае – получать информацию, введенную пользователем с клавиатуры.

Помните, что получение информации от пользователя крайне важный момент, так как большинство ошибок в программах возникают из-за некорректных входных данных, а точнее, из-за недостаточной их обработки.

И так, к делу! Вспомним пример одного из предыдущих уроков, в котором мы в цикле, запрашивали информацию у пользователя, до тех пор, пока он не введет строку «выход». Вот фрагмент исходного кода:

//Переменная для хранения введенной строки
string userString = "";

//Цикл с постусловием
do
{
    //Приглашение пользователю
    Console.Write("Введите любую строку и нажмите клавишу Enter: ");

    /*
    * Получение веденной с клавиатуры строки,
    * введенная строка сохраняется в переменную userString
    */
    userString = Console.ReadLine();

    //Вывод введенной строки
    Console.WriteLine("Пользователь ввел строку: " + userString);
} while (userString != "выход");

Получение информации с клавиатуры и сохранения этой информации в переменную заключается в одной лишь строке:

userString = Console.ReadLine();

Всё очень просто, после того как пользователь введет строку и нажмет на клавишу «Enter», информация окажется в переменной «userString». Но тут есть один нюанс, операция «Console.ReadLine();» (на самом деле, это вызов метода «ReadLine», класса «Console») возвращает как результат строку. Всё бы ничего, но на практике нам потребуется получать от пользователя не только строки, но и числа, например. Так что, нужно научиться преобразовывать строковые значения в численные. К счастью, в языке C# есть инструмент для преобразования типов. На практике, это выглядит примерно так:

//Получение строки
string userString = Console.ReadLine();

//Преобразование строки в число (в тип int)
int intValue = Convert.ToInt32(userString);

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

Теперь давайте напишем программу, которая запрашивает у пользователя сначала одно целое число, затем второе, а потом, выводит результат сложения этих чисел в консоль.

Создадим новый проект и напишем следующий код, в методе Main:

//Приглашение пользователю ввести первое число
Console.Write("Введите первое число и нажмите клавишу Enter: ");

//Получение первой строки
string firstString = Console.ReadLine();

//Преобразование первой строки в число
int firstArg = Convert.ToInt32(firstString);

//Приглашение пользователю ввести второе число
Console.Write("Введите второе число и нажмите клавишу Enter: ");

//Получение второй строки
string secondString = Console.ReadLine();

//Преобразование второй строки в число
int secondArg = Convert.ToInt32(secondString);

//Сложение двух переменных
int result = firstArg + secondArg;

//Вывод результата
Console.WriteLine("Результат сложения введенных чисел: " + result.ToString());

/*
* Обратите внимание на запись result.ToString(),
* тут мы преобразовали число в строку, вызвав
* метод ToString на переменной result!
* Этой операцией мы будем пользоваться часто. 
*/ 

Обратите внимание на комментарий в самом конце кода! Там рассказывается как перевести число, обратно в строку.

А теперь соберите проект и запустите программу. Затем, введите какое-нибудь целое число (только целое и обязательно число!), например, 25 и нажмите клавишу Enter. Потом введите другое число (хотя, можно и тоже самое), например, 10 и нажмите Enter. В результате вы должны увидеть результат сложения этих чисел! Выглядеть это будет примерно так:

Результат выполнения программы

Результат выполнения программы

На этот раз хватит информации. В следующем уроке мы поговорим как обрабатывать ошибки во время выполнения программы. Например, те, которые могут возникнуть в приведенном выше примере, если пользователь введет не число, а простой текст! Но это уже тема следующего урока…

Перейти к следующему уроку