Привет всем.
Знакомых программистов у меня нет. Так что и спросить не у кого. Изучаю C# по "Г. Шилдт С# 4.0 полное руководство" - пока на 241 странице.
Написал небольшой консольный калькулятор. Всё как-бы работает и не падает. А вопрос, собственно, в заголовке.
Приму любую конструктивную критику.
using System;
class Program
{
static void Main(string[] args)
{
Calculator calculator = new Calculator();
calculator.Header();
calculator.Instruction();
calculator.Start();
}
}
public class Calculator
{
string number;
char znak;
double[] Numbers = {0, 0};
public void Start()
{
InputNumbers();
InputAction();
DataProcessing();
}
public void Header()
{
Console.WriteLine("Программа \"Простой калькулятор\"");
}
public void Instruction()
{
Console.WriteLine("\nДля дроби используй запятую - ','");
Console.WriteLine("+ - для сложения чисел");
Console.WriteLine("- - для вычитания чисел");
Console.WriteLine("* - для умножения чисел");
Console.WriteLine("/ - для деления чисел");
Console.WriteLine("q - для выхода из программы\n");
}
void InputNumbers()
{
for (int count = 0; count < Numbers.Length; count++)
{
Console.Write("Введите {0} число: ", count + 1);
number = Console.ReadLine();
if (number == "q")
{
Environment.Exit(0);
}
else
{
try
{
Numbers[count] = Convert.ToDouble(number);
}
catch
{
Console.WriteLine("{0}-число не может принять значение \"{1}\". Внимательно читайте интрукцию.", count + 1, number);
Instruction();
Start();
}
}
}
}
void InputAction()
{
Console.Write("Введите действие: ");
number = Console.ReadLine();
if (number == "q")
{
Environment.Exit(0);
}
else
{
try
{
znak = Convert.ToChar(number);
}
catch
{
Instruction();
InputAction();
}
}
if(Numbers[1] == 0 & znak == '/')
{
Console.WriteLine("\n<<<<<< Деление на нуль невозможно >>>>>>\n");
Start();
}
}
void DataProcessing()
{
switch (znak)
{
case '+': Console.WriteLine("\n<<<<<< {0} + {1} = {2} >>>>>>\n", Numbers[0], Numbers[1], Numbers[0] + Numbers[1]); break;
case '-': Console.WriteLine("\n<<<<<< {0} - {1} = {2} >>>>>>\n", Numbers[0], Numbers[1], Numbers[0] - Numbers[1]); break;
case '*': Console.WriteLine("\n<<<<<< {0} * {1} = {2} >>>>>>\n", Numbers[0], Numbers[1], Numbers[0] * Numbers[1]); break;
case '/': Console.WriteLine("\n<<<<<< {0} / {1} = {2} >>>>>>\n", Numbers[0], Numbers[1], Numbers[0] / Numbers[1]); break;
}
Start();
}
}