c#实现简单计算器
2015-09-21 19:55
561 查看
参考了网上的文章,加以修改
核心代码:
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; } }
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#实现基于链表的内存记事本实例
- C#托管堆对象实例包含内容分析