コード例 #1
0
        private void NumberPassing(string value)
        {
            if (state == StateOfCalc.OPERATIONSET)
            {
                state         = StateOfCalc.SECTOSET;
                InsertedValue = String.Empty;
            }
            else if (state == StateOfCalc.RESULT)
            {
                InsertedValue = String.Empty;
                state         = StateOfCalc.FIRSTTOSET;
            }

            if ("," == value)
            {
                if (InsertedValue.Contains(","))
                {
                    return;
                }
                else if (InsertedValue == String.Empty)
                {
                    InsertedValue = "0,";
                    return;
                }
            }

            InsertedValue += value;
        }
コード例 #2
0
        private void SetOperation(string obj)
        {
            switch (state)
            {
            case StateOfCalc.FIRSTTOSET:
                if (InsertedValue != String.Empty)
                {
                    number1 = ParsetoDouble(InsertedValue);
                    state   = StateOfCalc.OPERATIONSET;
                    SetOperationOfCalc(obj);
                }
                break;

            case StateOfCalc.OPERATIONSET:
                SetOperationOfCalc(obj);
                break;

            case StateOfCalc.SECTOSET:
                operation = Operation.NONE;
                state     = StateOfCalc.FIRSTTOSET;
                break;
            }

            InsertedValue = String.Empty;
        }
コード例 #3
0
        private void SetOperationOfCalc(string obj)
        {
            switch (obj)
            {
            case "+":
                operation = Operation.ADD;
                state     = StateOfCalc.OPERATIONSET;
                break;

            case "-":
                operation = Operation.SUB;
                state     = StateOfCalc.OPERATIONSET;
                break;

            case "*":
                operation = Operation.MUL;
                state     = StateOfCalc.OPERATIONSET;
                break;

            case "/":
                operation = Operation.DIV;
                state     = StateOfCalc.OPERATIONSET;
                break;

            case "C":
                operation = Operation.NONE;
                state     = StateOfCalc.FIRSTTOSET;
                break;
            }
        }
コード例 #4
0
        private void operationBtn_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;

            switch (state)
            {
            case StateOfCalc.FIRSTTOSET:
                if (InsertedValue != String.Empty)
                {
                    number1 = ParsetoDouble(InsertedValue);
                    state   = StateOfCalc.OPERATIONSET;
                    SetOperationOfCalc(btn.Text);
                }
                break;

            case StateOfCalc.OPERATIONSET:
                SetOperationOfCalc(btn.Text);
                break;

            case StateOfCalc.SECTOSET:
                operation = Operation.NONE;
                state     = StateOfCalc.FIRSTTOSET;
                break;
            }

            InsertedValue = String.Empty;
        }
コード例 #5
0
        private void num_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;

            if (state == StateOfCalc.OPERATIONSET)
            {
                state         = StateOfCalc.SECTOSET;
                InsertedValue = String.Empty;
            }
            else if (state == StateOfCalc.RESULT)
            {
                InsertedValue = String.Empty;
                state         = StateOfCalc.FIRSTTOSET;
            }

            if ("," == btn.Text)
            {
                if (InsertedValue.Contains(","))
                {
                    return;
                }
                else if (InsertedValue == String.Empty)
                {
                    InsertedValue = "0,";
                    return;
                }
            }

            InsertedValue += btn.Text;
        }
コード例 #6
0
        private void CalculateResult()
        {
            if (state == StateOfCalc.SECTOSET)
            {
                number2 = ParsetoDouble(InsertedValue);
                try
                {
                    switch (operation)
                    {
                    case Operation.ADD:
                        InsertedValue = calcEngine.Addition(number1, number2).Result.ToString();
                        break;

                    case Operation.SUB:
                        InsertedValue = calcEngine.Subtraction(number1, number2).Result.ToString();
                        break;

                    case Operation.MUL:
                        InsertedValue = calcEngine.Multiplication(number1, number2).Result.ToString();
                        break;

                    case Operation.DIV:
                        if (number2.Equals(0))
                        {
                            InsertedValue = "Can't div by ZERO";
                            return;
                        }
                        InsertedValue = calcEngine.Division(number1, number2).Result.ToString();
                        break;
                    }
                    state = StateOfCalc.RESULT;
                }
                catch (Exception e)
                {
                    MessagingCenter.Send(new MessagingCenterAlert
                    {
                        Title   = "Error",
                        Message = e.Message,
                        Cancel  = "OK"
                    }, "message");
                }
            }
        }
コード例 #7
0
        private void CalculateResult()
        {
            if (state == StateOfCalc.SECTOSET)
            {
                number2 = ParsetoDouble(InsertedValue);
                try
                {
                    switch (operation)
                    {
                    case Operation.ADD:
                        InsertedValue = calcEngine.Addition(number1, number2).Result.ToString();
                        break;

                    case Operation.SUB:
                        InsertedValue = calcEngine.Subtraction(number1, number2).Result.ToString();
                        break;

                    case Operation.MUL:
                        InsertedValue = calcEngine.Multiplication(number1, number2).Result.ToString();
                        break;

                    case Operation.DIV:
                        if (number2.Equals(0))
                        {
                            InsertedValue = "Can't div by ZERO";
                            return;
                        }
                        InsertedValue = calcEngine.Division(number1, number2).Result.ToString();
                        break;
                    }
                    state = StateOfCalc.RESULT;
                }
                catch (Exception e)
                {
                }
            }
        }