.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 } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д