Методы синтаксического анализа позволяют без особого труда преобразовать числовое значение, введенное с клавиатуры или же считанное из текстового файла в виде строки, в соответствующий внутренний формат. В качестве примера ниже приведена программа, в которой усредняется ряд чисел, вводимых пользователем. Сначала пользователю предлагается указать количество усредняемых значений, а затем это количество считывается методомReadLine и преобразуется из строки в целое число методомInt32.Parse. Далее вводятся отдельные значения, преобразуемые методомDouble. Parse из строки в их эквивалент типаdouble.
// Эта программа усредняет ряд чисел, вводимых пользователем.
using System; using System.10;
class AvgNums {
static void Main { string str; int n;
double sum = 0.0; double avg, t;
Console.Write("Сколько чисел вы собираетесь ввести: "); str = Console.ReadLine ; try {
n = Int32.Parse(str);
} catch(FormatException exc) {
Console.WriteLine(exc.Message); return;
} catch(OverflowException exc) {
Console.WriteLine(exc.Message); return;
}
Console.WriteLine("Введите " + n + " чисел."); for (int i=0; i < n ; i++) {
Console.Write(": "); str = Console.ReadLine ; try {
t = Double.Parse(str);
} catch(FormatException exc) {
Console.WriteLine(exc.Message) ; t = 0.0;
} catch(OverflowException exc) {
Console.WriteLine(exc.Message) ; t = 0;
}
sum += t;
}
avg = sum / n;
Console.WriteLine("Среднее равно " + avg);
Выполнение этой программы может привести, например, к следующему результату.
Сколько чисел вы собираетесь ввести: 5 Введите 5 чисел.
: 1.1 : 2.2 : 3.3 : 4.4 : 5.5
Среднее равно 3.3
Следует особо подчеркнуть, что для каждого преобразуемого значения необходимо выбирать подходящий метод синтаксического анализа. Так, если попытаться преобразовать строку, содержащую значение с плавающей точкой, методомInt32 . Parse , то искомый результат, т.е. числовое значение с плавающей точкой, получить не удастся.
Как пояснялось выше, при неудачном исходе преобразования методParse сгенерирует исключение. Для того чтобы избежать генерирования исключений при преобразовании числовых строк, можно воспользоваться методомTryParse , определенным для всех числовых структур. В качестве примера ниже приведен один из вариантов методаTryParseO,определяемых в структуреInt 32:
static bool TryParse(string