Не работает программа, исключения - C#
Формулировка задачи:
Всем привет, очень нужна помощь в доработке программы.
Код
При работе возникает сбой, нужно чтобы при вводе (букв или другом некорректном вводе) обрабатывалось исключение.
P.S. С классами работаю совсем недавно, как сделать чтобы результат из catch (вывод сообщений) выводился в классе Program.
Заранее спасибо.
Листинг программы
- class Program
- {
- static void Main(string[] args)
- {
- int k;//для кол-ва членов ряда
- double x;//значение переменной х
- WordsinstedNumber z = new WordsinstedNumber();
- Console.Write("Введите значение переменной x: ");
- do
- {
- x = double.Parse(Console.ReadLine());
- z.NumberX(x);//проверка числа
- } while (x == 0);
- Console.Write("Введите количество членов ряда k: ");
- do
- {
- k = int.Parse(Console.ReadLine());
- z.NumberK(k);//проверка числа
- } while (k < 1);
- z.Raschet(k, x);
- Console.ReadKey();
- }
- }
- public class WordsinstedNumber: Exception
- {
- /// <summary>
- /// проверка на корректность ввода значения
- /// </summary>
- /// <param name="x">проверяемое число</param>
- public void NumberK(int x)
- {
- int i = 0;
- try
- {
- if (i != Convert.ToInt32(x)) throw new WordsinstedNumber();
- }
- catch (WordsinstedNumber)
- {
- Console.WriteLine("Введите значение сново.");
- }
- }
- /// <summary>
- /// проверка на равенство нулю
- /// </summary>
- /// <param name="x">проверяемое число</param>
- public void NumberX(double x)
- {
- double i = 0;
- try
- {
- if (x == 0) throw new DivideByZeroException();// исключение при попытке деления на 0
- if ( i != Convert.ToDouble(x)) throw new WordsinstedNumber();
- }
- catch (DivideByZeroException ex)
- {
- Console.WriteLine("Exception: " + ex.GetType().Name + " " + ex.Message);
- Console.WriteLine("Введите число сново.");
- }
- catch (WordsinstedNumber ex)
- {
- Console.WriteLine("Exception: " + ex.GetType().Name + " " + ex.Message);
- Console.WriteLine("Вы ввели буквы. Введите число заново.");
- }
- }
- /// <summary>
- /// расчет исходного ряда
- /// </summary>
- /// <param name="k">кол-во членов ряда</param>
- /// <param name="x">значение переменной</param>
- public void Raschet(int k, double x)
- {
- int l;
- double sum = 0;
- //расчет ряда
- bool flag = false;
- do
- {
- try
- {
- Console.Write("Введите длину массива l: ");
- while (!int.TryParse(Console.ReadLine(), out l))
- {
- Console.WriteLine("Введите число.");
- }
- double[] mass = new double[l];
- for (int i = 1; i <= k; i++)
- {
- sum += Math.Pow(-1, i + 1) / (2 * x - 1);
- mass[i - 1] += sum;
- }
- flag = false;
- }
- catch (IndexOutOfRangeException) // исключение - индекс за пределами массива
- {
- Console.WriteLine("Выход за пределы границы массива. Введите длину массива l сново.");
- flag = true;
- }
- } while (flag);
- Console.WriteLine("Результат:\t" + sum);
- }
- }
Решение задачи: «Не работает программа, исключения»
textual
Листинг программы
- class Program
- {
- static void Main(string[] args)
- {
- int k;//для кол-ва членов ряда
- double x;//значение переменной х
- try
- {
- WordsinstedNumber z = new WordsinstedNumber();
- Console.Write("Введите значение переменной x: ");
- do
- {
- x = double.Parse(Console.ReadLine());
- z.NumberX(x);//проверка числа
- } while (x == 0);
- Console.Write("Введите количество членов ряда k: ");
- do
- {
- k = int.Parse(Console.ReadLine());
- z.NumberK(k);//проверка числа
- } while (k < 1);
- z.Raschet(k, x);
- Console.ReadKey();
- }
- catch(ArgumentException)
- {
- Console.WriteLine("не корректно введено какоето поле");
- }
- catch(Exception e)
- {
- Console.WriteLine(e.Message);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д