示例#1
0
        public void CalculatorTaskFile()
        {
            this.writer.Write("----------Calculator. Task 2: Read/write data from/to file");
            logger.Info("Calculator. Task 2: Read/write data from/to file.\n");
            try
            {
                Calculator expression = new Calculator(new FileInputOutput(configuration["inputFile"], configuration["outputFile"]));

                this.writer.Write("The first number:");
                double firstNumber = expression.Read(0);
                this.writer.Write(firstNumber);
                this.writer.Write("The second number:");
                double secondNumber = expression.Read(1);
                this.writer.Write(secondNumber);
                this.writer.Write("The operation to perform:");
                this.writer.Write("\t1 - Addition, 2 - Subtraction, 3 - Multiplication, 4 - Division.");
                double option = expression.Read(2);
                this.writer.Write(option);

                double calculationResult = option switch
                {
                    1 => Calculator.Calculate(firstNumber, secondNumber, Calculator.Add),
                    2 => Calculator.Calculate(firstNumber, secondNumber, Calculator.Subtract),
                    3 => Calculator.Calculate(firstNumber, secondNumber, Calculator.Multiply),
                    4 => Calculator.Calculate(firstNumber, secondNumber, Calculator.Divide),
                    _ => throw new ArgumentException($"invalid value : {option}")
                };

                this.writer.Write($"The result of calculation : {calculationResult}\n");
                expression.Write($"The result of calculation : {calculationResult}");
            }

            catch (FileNotFoundException fileEx)
            {
                logger.Info("File not found: " + fileEx.Message);
            }

            catch (IOException e)
            {
                logger.Error(e.Message);
            }

            catch (FormatException e)
            {
                logger.Error(e.Message);
            }

            catch (DivideByZeroException e)
            {
                logger.Error(e.Message);
            }
        }
示例#2
0
        public void CalculatorTaskConsole()
        {
            this.writer.Write("----------Calculator. Task 1: Read/write data from/to console");
            logger.Info("Calculator. Task 1: Read/write data from/to console.\n");
            try
            {
                Calculator expression = new Calculator(new ConsoleInputOutput());

                this.writer.Write("Enter first number:");
                double firstNumber = expression.Read();
                this.writer.Write("Enter second number:");
                double secondNumber = expression.Read();
                this.writer.Write("Choose an operation to perform:");
                this.writer.Write("\t1 - Addition, 2 - Subtraction, 3 - Multiplication, 4 - Division.");
                double option = expression.Read();

                double calculationResult = option switch
                {
                    1 => Calculator.Calculate(firstNumber, secondNumber, Calculator.Add),
                    2 => Calculator.Calculate(firstNumber, secondNumber, Calculator.Subtract),
                    3 => Calculator.Calculate(firstNumber, secondNumber, Calculator.Multiply),
                    4 => Calculator.Calculate(firstNumber, secondNumber, Calculator.Divide),
                    _ => throw new ArgumentException($"invalid value : {option}")
                };
                this.writer.Write($"The result of calculation : {calculationResult}\n\n");
            }
            catch (FormatException e)
            {
                logger.Error(e.Message);
            }

            catch (DivideByZeroException e)
            {
                logger.Error(e.Message);
            }
        }