.NET 4.x Ошибка ArgumentNulException не обработано - C#

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

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

Пытаюсь написать калькулятор в командной строке. При попытке отладки вылетает ошибка ArgumentNulException не обработано на строке
if (zadacha.Contains('='))
вот весь класс если что
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace Калькулятор
{
    static class Program
    {

        [STAThread]
        static void Main()
        {
            
            Calc calc1 = new Calc();
                Calc calc2 = null;

    }
}
 
    class Calc
    {
        public Calc()
        {
            Console.WriteLine("Привет, я Калькулятор");
            Console.WriteLine("Введи числовое уравнение в формате a+b+c=");
            string zadacha;
            zadacha = Console.ReadLine();
            if (zadacha.Contains('='))
            {

                #region переменные
                string StrokaVvoda;
                string pervoechislo;
                string vtoroechislo;
                string treteechislo;
                char pz;
                char vz;
                int dlinastroki;
                int num = 0;
                char tekushiyznak;
                double a;
                double b;
                double c;
 
                #endregion
                #region механизм считывания строки и деления ее на составляющие
                StrokaVvoda = zadacha;
                dlinastroki = StrokaVvoda.Length;
                tekushiyznak = StrokaVvoda[0];
                List<char> _pervoechislo = new List<char>();
                for (int i = 0; i < dlinastroki; i++)
                {
                    tekushiyznak = StrokaVvoda[i];
 
                    num++;
 
                    if (Char.IsDigit(tekushiyznak))
                    {
                        _pervoechislo.Add(tekushiyznak);
                    }
                    else
                    {
 
                    }
                }
                pz = StrokaVvoda[num];
                List<char> _vtoroechislo = new List<char>();
                for (int i = num++; i < dlinastroki; i++)
                {
                    tekushiyznak = StrokaVvoda[i];
                    num++;
                    if (Char.IsDigit(tekushiyznak))
                    {
                        _vtoroechislo.Add(tekushiyznak);
                    }
                    else
                    {
 
                    }
                }
                vz = StrokaVvoda[num];
                List<char> _treteechislo = new List<char>();
                for (int i = num++; i < dlinastroki; i++)
                {
                    tekushiyznak = StrokaVvoda[i];
                    num++;
                    if (Char.IsDigit(tekushiyznak))
                    {
                        _treteechislo.Add(tekushiyznak);
                    }
                    else
                    {
                        return;
                    }
                }
 
                _pervoechislo.Reverse();
                _vtoroechislo.Reverse();
                _treteechislo.Reverse();
 
                pervoechislo = Char.ToString(_pervoechislo[_pervoechislo.Count]);
                vtoroechislo = Char.ToString(_vtoroechislo[_vtoroechislo.Count]);
                treteechislo = Char.ToString(_treteechislo[_treteechislo.Count]);
 
                a = Convert.ToDouble(pervoechislo);
                b = Convert.ToDouble(vtoroechislo);
                c = Convert.ToDouble(treteechislo);
                #endregion
                #region Математические операции
                if (pz == '+' && vz == '+')
                {
                    Console.WriteLine(a + b + c);
                }
                else if (pz == '+' && vz == '-')
                {
                    Console.WriteLine(a + b - c);
                }
                else if (pz == '+' && vz == '*')
                {
                    Console.WriteLine(a + b * c);
                }
                else if (pz == '+' && vz == '/')
                {
                    Console.WriteLine(a + b / c);
                }
                else if (pz == '-' && vz == '+')
                {
                    Console.WriteLine(a - b + c);
                }
                else if (pz == '-' && vz == '-')
                {
                    Console.WriteLine(a - b - c);
                }
                else if (pz == '-' && vz == '*')
                {
                    Console.WriteLine(a - b * c);
                }
                else if (pz == '-' && vz == '/')
                {
                    Console.WriteLine(a - b / c);
                }
                else if (pz == '/' && vz == '-')
                {
                    Console.WriteLine(a - b - c);
                }
                else if (pz == '/' && vz == '+')
                {
                    Console.WriteLine(a / b + c);
                }
                else if (pz == '/' && vz == '*')
                {
                    Console.WriteLine(a / b * c);
                }
                else if (pz == '/' && vz == '/')
                {
                    Console.WriteLine(a / b / c);
                }
                else if (pz == '*' && vz == '-')
                {
                    Console.WriteLine(a * b - c);
                }
                else if (pz == '*' && vz == '+')
                {
                    Console.WriteLine(a * b + c);
                }
                else if (pz == '*' && vz == '/')
                {
                    Console.WriteLine(a * b / c);
                }
                else if (pz == '*' && vz == '*')
                {
                    Console.WriteLine(a * b * c);
                }
                #endregion
            }
 
        }
 
    }
 
}
Подскажите плиз, где я сделал ошибку? Заранее спасибо

Решение задачи: «.NET 4.x Ошибка ArgumentNulException не обработано»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace Калькулятор
{
    static class Program
    {
 
 
        [STAThread]
        static void Main()
        { 
                string zadacha;
                zadacha = Console.ReadLine();
                Console.WriteLine("Привет, я Калькулятор");
                Console.WriteLine("Введите числовое уравнение в формате a+b+c=");
                Console.ReadLine();
               if (zadacha != null)
                { 
                   if (zadacha.Contains('='))
                {
                    Calc calc1 = new Calc();
                }
                
               }
        }
 
        class Calc
        {
            public Calc()
            {
                string zadacha = Console.ReadLine();
                        #region переменные
                        char pz;
                        char vz;
                        double a;
                        double b;
                        double c;
                        #endregion
 
                        #region механизм считывания строки и деления ее на составляющие
                        string[] chisla = zadacha.Split('-', '+', '*', '/');
                        a = double.Parse(chisla[0]);
                        b = double.Parse(chisla[1]);
                        c = double.Parse(chisla[2]);
                        string[] znaki = zadacha.Split('1','2','3','4','5','6','7','8','9','0','.','=');
                        pz = char.Parse(znaki[0]);
                        vz = char.Parse(znaki[1]);
                        #endregion
                        #region Математические операции
                        if (pz == '+' && vz == '+')
                        {
                            Console.WriteLine(a + b + c);
                        }
                        else if (pz == '+' && vz == '-')
                        {
                            Console.WriteLine(a + b - c);
                        }
                        else if (pz == '+' && vz == '*')
                        {
                            Console.WriteLine(a + b * c);
                        }
                        else if (pz == '+' && vz == '/')
                        {
                            Console.WriteLine(a + b / c);
                        }
                        else if (pz == '-' && vz == '+')
                        {
                            Console.WriteLine(a - b + c);
                        }
                        else if (pz == '-' && vz == '-')
                        {
                            Console.WriteLine(a - b - c);
                        }
                        else if (pz == '-' && vz == '*')
                        {
                            Console.WriteLine(a - b * c);
                        }
                        else if (pz == '-' && vz == '/')
                        {
                            Console.WriteLine(a - b / c);
                        }
                        else if (pz == '/' && vz == '-')
                        {
                            Console.WriteLine(a - b - c);
                        }
                        else if (pz == '/' && vz == '+')
                        {
                            Console.WriteLine(a / b + c);
                        }
                        else if (pz == '/' && vz == '*')
                        {
                            Console.WriteLine(a / b * c);
                        }
                        else if (pz == '/' && vz == '/')
                        {
                            Console.WriteLine(a / b / c);
                        }
                        else if (pz == '*' && vz == '-')
                        {
                            Console.WriteLine(a * b - c);
                        }
                        else if (pz == '*' && vz == '+')
                        {
                            Console.WriteLine(a * b + c);
                        }
                        else if (pz == '*' && vz == '/')
                        {
                            Console.WriteLine(a * b / c);
                        }
                        else if (pz == '*' && vz == '*')
                        {
                            Console.WriteLine(a * b * c);
                        }
                        #endregion
                }
 
            }
 
        }
 
    }

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


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

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

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