只有一个textbox ,接收,和负责得出结果,已赋值,比如输入了1之后,   按+号,得不出结果啊啊啊怎么办?
有大神可以写一下大概的代码我看看吗?

解决方案 »

  1.   

    https://blog.csdn.net/qq_41939847/article/details/101166013
      

  2.   

    https://blog.csdn.net/vivi_and_qiao/article/details/93863868
      

  3.   


    using System.Collections.Generic;
    using System.Windows.Forms;namespace Test5
    {
        public partial class Form1 : Form
        {
            public class Calculator
            {
                public Calculator()
                {
                    _OptStack = new Stack<char>();
                    _SuffixStack = new Stack<float>();
                }            private Stack<char> _OptStack;
                private Stack<float> _SuffixStack;            public float Calculate(string expression)
                {
                    string lastNum = string.Empty;
                    for (int i = 0; i < expression.Length; i++)
                    {
                        if (char.IsNumber(expression[i]) || expression[i].Equals('.'))
                        {
                            lastNum += expression[i];
                        }
                        else
                        {
                            if (lastNum != string.Empty)
                            {
                                Merger(float.Parse(lastNum));
                                lastNum = string.Empty;
                            }
                            AddOpt(expression[i]);
                        }
                    }
                    if (lastNum != string.Empty)
                    {
                        Merger(float.Parse(lastNum));
                    }
                    while (_OptStack.Count > 0)
                    {
                        Merger(_OptStack.Pop());
                    }                return _SuffixStack.Pop();
                }            private void AddOpt(char opt)
                {
                    if (_OptStack.Count == 0)
                    {
                        _OptStack.Push(opt);
                        return;
                    }
                    if (opt.Equals(')'))
                    {
                        while (!_OptStack.Peek().Equals('('))
                        {
                            Merger(_OptStack.Pop());
                        }
                        _OptStack.Pop();
                        return;
                    }
                    char tempOpt = _OptStack.Peek();
                    if ((opt.Equals('-') || opt.Equals('+')) &&
                        (tempOpt.Equals('*') || tempOpt.Equals('/')))
                    {
                        while (_OptStack.Count > 0)
                        {
                            Merger(_OptStack.Pop());
                        }
                    }                _OptStack.Push(opt);
                }            private void Merger(float exp)
                {
                    _SuffixStack.Push(exp);
                }            private void Merger(char exp)
                {
                    float num1 = _SuffixStack.Pop();
                    float num2 = _SuffixStack.Pop();
                    float result = 0;
                    switch (exp)
                    {
                        case '+':
                            result = num2 + num1;
                            break;
                        case '-':
                            result = num2 - num1;
                            break;
                        case '*':
                            result = num2 * num1;
                            break;
                        case '/':
                            result = num2 / num1;
                            break;
                    }
                    _SuffixStack.Push(result);
                }
            }        public Form1()
            {
                InitializeComponent();            Calculator calculator = new Calculator();            MessageBox.Show("结果:"+ calculator.Calculate("(1+2)/3+6/2+3*8").ToString());
            }
        }
    }
      

  4.   

    直接用 datatable.compute算了。
    public static void Main(string[] args)
            {
                DataTable dt = new DataTable();
                var q = dt.Compute("1+2",null);
                Console.WriteLine(q);
                Console.ReadLine();
            }