.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
}
}
}
}