Example #1
0
        public string Divide(double numberA, double numberB)
        {
            string result = string.Empty;

            try
            {
                IOperatorFactory divide         = new DivideFactory();
                Operator         divideOperator = divide.CreareOperator();
                divideOperator.NumberA = numberA;
                divideOperator.NumberB = numberB;
                result = divideOperator.GetResult().ToString();
            }
            catch (Exception ex)
            {
                _Ilogger.Log(LogLevel.Error, ex);
            }
            return(result);
        }
Example #2
0
        public string GetResult()
        {
            string[] str = expression.Split(new char[4] {
                '+', '-', '/', '*'
            });
            string result = null;

            if (str.Length == 1)
            {
                return(Convert.ToDouble(str[0]).ToString());
            }
            else
            {
                //第一个数带符号问题
                if (str.Length == 3)
                {
                    str[0] = "-" + str[1];
                    str[1] = str[2];
                }
                char c = expression.ToCharArray()[expression.IndexOf(str[0]) + str[0].Length];
                //string pattern = @"^-?\d+$";//判断整数?
                //Regex regex = new Regex(pattern);
                switch (c)
                {
                case '+':
                {
                    AdditionFactory additionFactory = new AdditionFactory();
                    Operation       operateAddition = additionFactory.CreateAddition(str[0], str[1]);
                    result = operateAddition.GetResult();
                    break;
                }

                case '-':
                {
                    SubtractionFactory subtractionFactory = new SubtractionFactory();
                    Operation          operateSubtraction = subtractionFactory.CreateSubtraction(str[0], str[1]);
                    result = operateSubtraction.GetResult();
                    break;
                }

                case '*':
                {
                    MultiplyFactory additionFactory = new MultiplyFactory();
                    Operation       operateMultiply = additionFactory.CreateMultiply(str[0], str[1]);
                    result = operateMultiply.GetResult();
                    break;
                }

                case '/':
                {
                    DivideFactory additionFactory = new DivideFactory();
                    Operation     operateDivide   = additionFactory.CreateDivide(str[0], str[1]);
                    result = operateDivide.GetResult();
                    break;
                }

                default: result = "error"; break;
                }
            }
            return(result.ToString());
        }