Рассмотрим простейшие способы ввода с клавиатуры. В классе Console определены методы ввода строки и отдельного символа, но нет методов, которые позволяют непосредственно считывать с клавиатуры числа. Ввод числовых данных выполняется в два этапа:
- символы, представляющие собой число, вводятся с клавиатуры в строковую переменную;
- выполняется преобразование строки в переменную соответствующего типа.
Преобразование можно выполнить либо с помощью специального класса Convert, определенного в пространстве имен System, либо с помощью метода Parse класса Double библиотеки .NЕТ. В листинге 1 используются оба способа.
Ниже приведены примеры организации ввода для различных типов данных:
Ввод строки:
Console.WriteLine ( "Введите строку" );
string s = Console.ReadLine ( );
Ввод символа:
Console.WriteLine ( "Введите символ" );
char с = (char) Console.Read ( );
Console.ReadLine( );
Ввод символа выполняется с помощью метода Read, который считывает только один символ из входного потока (оператор 2). Метод возвращает значение типа int, представляющее собой код символа, или -1, если символов во входном потоке нет (например, пользователь нажал клавишу Enter). Поскольку нам требуется не int, а char, а неявного преобразования от int к char не существует, приходится применить операцию явного преобразования типа.
Метод Read, в отличие от ReadLine, не очищает буфер, и если оператор 3 будет отсутствовать, то следующий после него ввод будет выполняться с того места, на котором закончился предыдущий. Поэтому за оператором 2 записан оператор 3, выполняющий вспомогательные функции. Он считывает остаток строки, тем самым очищая буфер.
Ввод целого числа:
string buf;
Console.WriteLine ( "Введите целое число" );
buf = Console.ReadLine();
int i =Convert.ToInt32( buf );
В приведенном варианте ввода целого числа введеная информация помещается в строковую переменную buf,а затем ее значение с помощью метода Convert.ToInt32 преобразуется в целый тип.
Ввод вещественного числа (при вводе вещественных чисел дробная часть отделяется от целой с помощью запятой, а не точки):
Console.WriteLine ( "Введите вещественное число" );
buf = Console.ReadLine( );
double х = Convert.ToDouble( buf );
или
Console.WriteLine ( "Введите вещественное число" );
buf = Console.ReadLine( );
double у = double.Parse( buf );
Допускается задавать числа с порядком, например, 1,95е-8.
При вводе целых и вещественных чисел используются или методы класса Convert, или метод Parse класса Double библиотеки .NЕТ, который используется здесь через имя типа С# double.