using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Object
{
public partial class Form2 : Form
{
//接收的第一个数据
string s1 = "0";
//接受的第二个数据
string s2 = "0";
//保存前一次的操作符
char o1 = ' ';
//多次运算的第二个操作符
char o2 = ' ';
//数字集字符串
string sNumber="0,1,2,3,4,5,6,7,8,9";
//用于把s1与s2操作的结果集赋予s1
double result;
//判断是否重新输入
bool jude = true;
/// <summary>
/// 窗体初始化
/// </summary>
public Form2()
{
InitializeComponent();
txt.Text = "0";
}
/// <summary>
/// 按钮方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Click(object sender, EventArgs e)
{
caculate(char.Parse(((Button)sender).Text));
}
/// <summary>
/// 数字与操作符的操作方法
/// </summary>
/// <param name="a"></param>
private void caculate(char a)
{
if (sNumber.Contains(a.ToString()))
{
if (o1 == ' ')
{
if (jude == false) { s1 = ""; jude = true; }
if (s1 == "0") { s1 = ""; }
s1 += a;
txt.Text = s1;
}
else
{
if (s2 == "0") { s2 = ""; }
s2 += a;
txt.Text = s2;
}
}
else if (a=='=')
{
GetSign(o1);
o1 = ' ';
jude = false;
}
else if (a == '.')
{
if(!txt.Text.Contains("."))
{
jude = true;
if (o1 == ' ')
{
txt.Text = s1 += '.';
}
else
{
txt.Text = s2 += '.';
}
}
}
else
{
jude = true;
if (o1 != ' ')
{
o2 = a;
GetSign(o1);
o1 = o2;
}
else
{
o1 = a;
}
}
}
/// <summary>
/// 运算方法
/// </summary>
/// <param name="t"></param>
private void GetSign(char t)
{
if (s2 != "0")
{
switch (t)
{
case '+': result = double.Parse(s1) + double.Parse(s2); break;
case '-': result = double.Parse(s1) - double.Parse(s2); break;
case '*': result = double.Parse(s1) * double.Parse(s2); break;
case '/': if (double.Parse(s2) != 0) { result = double.Parse(s1) / double.Parse(s2); } else { txt.Text = "被除数不能为零"; rtuZero(); return; } break;
case '%': if (!s1.Contains(".") && !s2.Contains(".")) { result = double.Parse(s1) % double.Parse(s2); } else { txt.Text = "求余符号两边必须为整数"; rtuZero(); return; } break;
}
txt.Text = result.ToString();
s1 = result.ToString();
s2 = "0";
}
else
{ }
}
/// <summary>
/// 归零方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnC_Click(object sender, EventArgs e)
{
s1 = "0";
s2 = "0";
o1 = ' ';
o2 = ' ';
txt.Text = "0";
txt.ReadOnly = false;
}
/// <summary>
/// 退格符方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Backbtn_Click(object sender, EventArgs e)
{
if (txt.Text.Length >= 2)
{
txt.Text = txt.Text.Remove(txt.Text.Length - 1, 1);
if (o1 == ' ')
{
if (s1.Length!=1)
{
s1 = s1.Remove(s1.Length - 1, 1);
}
}
else
{
if (s2.Length != 1)
{
s2 = s2.Remove(s1.Length - 1, 1);
}
}
}
}
/// <summary>
/// 调整错误情况下的变量,以便下一次的运算
/// </summary>
private void rtuZero()
{
txt.ReadOnly = true;
o2 = ' ';
}
}
}
很简单的一段代码。。正在实习中,无聊做的。供初学者参考。。。。