本文介绍了怎样做计算器可以做两个以上的操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用c#语言在windows商店中制作计算器,但是我有一个问题,计算器可以一次做两个操作,例如:1 + 2,3 * 5。我想制作一次可以做多次操作的计算器,例如:1 + 4 + 6 + 7,6 / 3 * 3.



这里是代码:

I want to make calculator in windows store with c# language, But i have a problem, the calculator just can do two operation at once, for example: 1+2, 3*5. I want to make calculator that can do many operation at once, for example: 1+4+6+7, 6/3*3.

And here is the code:

public sealed partial class MainPage : Page
    {
        string op1;
        string op2;
        string op;
        bool first = true;
        bool evaluated = false;

        public MainPage()
        {
            this.InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (!evaluated)
            {
                Button button = (sender) as Button;
                string val = button.Content.ToString();

                switch (val)
                {
                    // values setting
                    case "1":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "2":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "3":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "4":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "5":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "6":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "7":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "8":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "9":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case "0":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;
                    case ".":
                        if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
                        break;

                    // operators selection
                    case "+":
                        if (first) { first = false; } else { OperatorLocked(Convert.ToChar(val)); }
                        Expression.Text = op1 + " " + val;
                        FinalResult.Text = "0";
                        op = val;
                        break;
                    case "-":
                        if (first) { first = false; } else { OperatorLocked(Convert.ToChar(val)); }
                        Expression.Text = op1 + " " + val;
                        FinalResult.Text = "0";
                        op = val;
                        break;
                    case "*":
                        if (first) { first = false; } else { OperatorLocked(Convert.ToChar(val)); }
                        Expression.Text = op1 + " " + val;
                        FinalResult.Text = "0";
                        op = val;
                        break;
                    case "/":
                        if (first) { first = false; } else { OperatorLocked(Convert.ToChar(val)); }
                        Expression.Text = op1 + " " + val;
                        FinalResult.Text = "0";
                        op = val;
                        break;
                    case "%":
                        if (first)
                        {
                            new MessageDialog("Please select a statement of which you want to get the percentage.").ShowAsync();
                        }
                        else
                        {
                            if (op == "/")
                            {
                                // get percentage
                                FinalResult.Text = ((Convert.ToDouble(op1) / Convert.ToDouble(op2)) * 100).ToString();

                                op1 = "";
                                op2 = "";
                                op = "";
                                evaluated = true;
                            }
                            else
                            {
                                new MessageDialog("Only percentage is allowed.\n\nFor instance, Only division operator is allowed. value1 / value 2 and then press % to get their percentage.").ShowAsync();
                            }
                        }
                        break;
                    case "←":
                        if (first)
                        {
                            if (op1 != null && op1.Length > 0)
                            {
                                op1 = op1.Substring(0, op1.Length - 1);
                                FinalResult.Text = op1;
                            }
                            else
                            {
                                FinalResult.Text = "0";
                            }
                        }
                        else
                        {
                            if (op2 != null && op2.Length > 0)
                            {
                                op2 = op2.Substring(0, op2.Length - 1);
                                FinalResult.Text = op2;
                            }
                            else
                            {
                                FinalResult.Text = "0";
                            }
                        }
                        break;
                    case "=":
                        switch (op)
                        {
                            default:
                                if (!first)
                                {
                                    Evaluate(Convert.ToDouble(op1), Convert.ToDouble(op2), op);
                                    op1 = "";
                                    op2 = "";
                                    op = "";
                                    evaluated = true;
                                }
                                else
                                {
                                    new MessageDialog("Two operands must be selected and an operator must be selected, before you can evaluate them.").ShowAsync();
                                }
                                break;
                        }
                        break;
                }
            }
            else
            {
                FinalResult.Text = "0";
                Expression.Text = "";
                evaluated = false;

                Button_Click(sender, e);
            }
        }

        private void Evaluate(double op1, double op2, string op)
        {
            // Evaluate
            switch (op)
            {
                case "+":
                    FinalResult.Text = (op1 + op2).ToString();
                    Expression.Text = op1 + " + " + op2 + " =";
                    break;
                case "-":
                    FinalResult.Text = (op1 - op2).ToString();
                    Expression.Text = op1 + " - " + op2 + " =";
                    break;
                case "*":
                    FinalResult.Text = (op1 * op2).ToString();
                    Expression.Text = op1 + " x " + op2 + " =";
                    break;
                case "/":
                    FinalResult.Text = (op1 / op2).ToString();
                    Expression.Text = op1 + " / " + op2 + " =";
                    break;
            }
        }

        private void OperatorLocked(char op)
        {
            new MessageDialog(op.ToString() + " is currently not available. \n\nYou can only select two operands currently.");
        }
    }
}





任何人都可以帮我制作可以做多次操作的计算器一次,例如:1 + 4 + 6 + 7,6 / 3 * 3?



Can anyone help me to make calculator that can do many operation at once, for example: 1+4+6+7, 6/3*3?

推荐答案


这篇关于怎样做计算器可以做两个以上的操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-18 19:22