|
Программирование >> Обработка исключительных ситуаций
Рассмотрим простейшие способы ввода с клавиатуры. В классе Console определены методы ввода строки и отдельного символа, но нет методов, которые позволяют непосредственно считывать с клавиатуры числа. Ввод числовых данных выполняется в два этапа: 1. Символы, представляющие собой число, вводятся с клавиатуры в строковую переменную. 2. Выполняется преобразование из строки в переменную соответствующего типа. Преобразование можно выполнить либо с помощью специального класса Convert, определенного в пространстве имен System, либо с помощью метода Parse, имеющегося в каждом стандартном арифметическом классе. В листинге 3.10 используются оба способа. Листинг3.10. Методы ввода using System; namespace ConsoleApplicationl class Classl static void MainO Console.WriteLineC Введите строку string s = Console.ReadLineO: Console.WriteLineC s = + s ); Console.WriteLineC Введите символ ); char с = (char)Console.ReadO; 2 Console.ReadLineC); 3 Console.WriteLineC c = + с ); string buf; строка - буфер для ввода чисел Console.WriteLineC Введите целое число ); buf = Consolе.ReadLineC); int i = Convert.ToInt32( buf ); 1/4 Console.WriteLineC i ); Console.WriteLineC Введите вещественное число ); buf = Console.ReadLineO: double x = Convert.ToDoubleС buf ); 5 Console.WriteLineC x ); Console.WriteLineC Введите вещественное число ); buf = Console.ReadLineO; double у - double.ParseC buf ); б Console.WriteLineC у ); Console.WriteLineC Введите вещественное число ); buf - Console.ReadLineO; decimal z = decimal.ParseC buf ); 7 Console.WriteLineC z ); Ввод-вывод в файлы При отладке даже небольших программ может потребоваться их выполнить не раз, не два и даже не десять. При этом ввод исходных данных может стать утомительным и испортить все удовольствие от процесса . Удобно заранее подготовить исходные данные в текстовом файле и считывать их в программе. Кроме того, это дает возможность не торопясь продумать, какие исходные данные требуется ввести для полной проверки программы, и заранее рассчитать, что должно получиться в результате. 1 При этом система задает вопрос, хотите ли вы воспользоваться услугами отладчика. От этого предложения следует отказаться, поскольку на данном уровне освоения языка предоставляемые отладчиком сведения будут бесполезны. А удовольствие - необходимое условие написания хорошей программы! К этому примеру необходимо сделать несколько пояснений. Ввод строки выполняется в операторе 1. Длина строки не ограничена, ввод выполняется до символа перевода строки. Ввод символа выполняется с помощью метода Read, который считывает один символ из входного потока (оператор 2). Метод возвращает значение типа int, представляющее собой код символа, или -1, если символов во входном потоке нет (например, пользователь нажал клавишу Enter). Поскольку нам требуется не int, a char, а неявного преобразования от int к char не существует, приходится применить операцию явного преобразования типа, которая описана в разделе Явное преобразование типа (см. с. 49). За оператором 2 записан оператор 3, который считывает остаток строки и никуда его не передает. Это необходимо потому, что ввод данных выполняется через буфер - специальную область оперативной памяти. Фактически, данные сначала заносятся в буфер, а затем считываются оттуда процедурами ввода. Занесение в буфер выполняется по нажатию клавиши Enter вместе с ее кодом. Метод Read, в отличие от ReadLine, не очищает буфер, поэтому следующий после него ввод будет выполняться с того места, на котором закончился предыдущий. В операторах 4 и 5 используются методы класса Convert, в операторах 6 и 7 - методы Parse классов Double и Decimal библиотеки .NET, которые используются здесь через имена типов С# double и decimal. ВНИМАНИЕ- При вводе вещественных чисел дробная часть отделяется от целой с помощью запятой, а не точки. Иными словами, при вводе используются правила операционной системы, а не языка программирования. Допускается задавать числа с порядком, например, 1,95е-8. Если вводимые с клавиатуры символы нельзя интерпретировать как веществен- ное число, генерируется исключение . Вывод из программы тоже бывает полезно выполнить не на экран, а в текстовый файл для последующего неспешного анализа и распечатки. Работа с файлами подробно рассматривается в главе 11, а здесь приводятся лишь образцы для использования в программах. В листинге 3.11 приведена версия программы из листинга 3.9, выполняющая вывод не на экран, а в текстовый файл с именем output.txt. Файл создается в том же каталоге, что и исполняемый файл программы, по умолчанию - ...\ConsoleApplication1\bin\Debug. Листинг3.11. Вывод в текстовый файл using System; using System.10: namespace ConsoleApplicationl { class Classl static void MainO StreamWriter f int i = 3; double у = 4.12; decimal d = 600m; string s = Вася ; new StreamWriterC output.txt ) f.WriteLineC f.WriteLineC f.WriteLineC + i ); {0} \nd = + s ): {1} . y, d ); 4 lib f.CloseO; Для того чтобы использовать в программе файлы, необходимо: 1. Подключить пространство имен, в котором описываются стандартные классы для работы с файлами (оператор 1). 2. Объявить файловую переменную и связать ее с файлом на диске (оператор 2). 3. Выполнить операции ввода-вывода (операторы 3-5). 4. Закрыть файл (оператор 6). СОВЕТ- При отладке программы бывает удобно выводить одну и ту же информацию и на экран, и в текстовый файл. Для этого соответствующие операторы дублируют. Ввод данных из файла выполняется аналогично. В листинге 3.12 приведена программа, аналогичная листингу 3.10, но ввод выполняется из файла с именем input.txt, расположенного в каталоге D:\C#. Естественно, из программы убраны все приглашения к вводу.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |