Не работает программа, исключения - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, очень нужна помощь в доработке программы. Код
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);
        }
 
    }
При работе возникает сбой, нужно чтобы при вводе (букв или другом некорректном вводе) обрабатывалось исключение. P.S. С классами работаю совсем недавно, как сделать чтобы результат из catch (вывод сообщений) выводился в классе Program. Заранее спасибо.

Решение задачи: «Не работает программа, исключения»

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);
            }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.545 из 5
Похожие ответы