您的位置:首页 > 编程语言 > C#

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# 计算器