c#实现简单计算器

来源:互联网 发布:2017广联达软件多少钱 编辑:程序博客网 时间:2024/06/05 18:31

参考了网上的文章,加以修改

核心代码:

private void btnPoi_Click(object sender, EventArgs e)        {            if(!pointKey)                tb.Text += ".";            pointKey = true;        }        private void btn0_Click(object sender, EventArgs e)        {            if (newNum)            {                if (tb.Text[0] != '0' || pointKey)                    tb.Text += "0";                else                    tb.Text = "0";            }            else            {                tb.Text = "0";                newNum = true;            }        }


private void btnAdd_Click(object sender, EventArgs e)        {            stk.Push(tb.Text);      //将第一个运算符前的数据压入stack            while(stk.Count>=3)     //当运算的数据超过2个时,先把前两个算出后压入stack            {                decimal y = Convert.ToDecimal(stk.Pop());                char sign = Convert.ToChar(stk.Pop());                decimal x = Convert.ToDecimal(stk.Pop());                switch (sign)                {                     case '+':                        stk.Push(Convert.ToString(x + y));                        break;                    case '-':                        stk.Push(Convert.ToString(x - y));                        break;                    case '*':                        stk.Push(Convert.ToString(x * y));                        break;                    case '/':                        stk.Push(Convert.ToString(x / y));                        break;                }            }            tb.Text = stk.Peek();       //将stack的顶部数据(可能是单一数据,也可能是计算后的数据)取出            stk.Push("+");            reAssignment();        }
private void btnDel_Click(object sender, EventArgs e)        {            string str = tb.Text;            if (str[str.Length - 1] == '.')            {                if (str.Length != 2)                {                    string before = str.Substring(0, str.Length - 2);                    tb.Text = before + ".";                }                else if (str.Length == 2)                {                    tb.Text = "0.";                }            }            else            {                tb.Text = str.Substring(0, str.Length - 1);            }        }

private void btnPoi_Click(object sender, EventArgs e)        {            if(!pointKey)                tb.Text += ".";            pointKey = true;        }        private void btn0_Click(object sender, EventArgs e)        {            if (newNum)            {                if (tb.Text[0] != '0' || pointKey)                    tb.Text += "0";                else                    tb.Text = "0";            }            else            {                tb.Text = "0";                newNum = true;            }        }



1 0