今天上机的时候,因为老师的留得作业差不多做完了,就试着做了这样一个简单的计算器,刚开始的时候的代码是这个样子:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Calculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string str = null;//保存算术表达式的字符串
char a='0';
public double ShowResult(char a,string str)
{
string[] num= str.Split('a');//这个地方的错误,使我预计的分割下来的两个参数不能成功的分割,应该不用单引号括起来的
double result=0;
try
{
switch (a)
{
case '+':
result = Convert.ToDouble(num[0]) + Convert.ToDouble(num[1]);
break;
case '-':
result = Convert.ToDouble(num[0]) - Convert.ToDouble(num[1]);
break;
case '*':
result = Convert.ToDouble(num[0]) * Convert.ToDouble(num[1]);
break;
case '/':
result = Convert.ToDouble(num[0]) / Convert.ToDouble(num[1]);
break;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
return result;
}
private void btnOne_Click(object sender, EventArgs e)//将算术表达式中的字符添加到字符串里
{
str += btnOne.Text;
txtShow.Text = str;
}
private void btnTwo_Click(object sender, EventArgs e)
{
str += btnTwo.Text;
txtShow.Text = str;
}
private void btnThree_Click(object sender, EventArgs e)
{
str += btnThree.Text;
txtShow.Text = str;
}
private void btnFour_Click(object sender, EventArgs e)
{
str += btnFour.Text;
txtShow.Text = str;
}
private void btnFive_Click(object sender, EventArgs e)
{
str += btnFive.Text;
txtShow.Text = str;
}
private void btnSix_Click(object sender, EventArgs e)
{
str += btnSix.Text;
txtShow.Text = str;
}
private void btnSeven_Click(object sender, EventArgs e)
{
str += btnSeven.Text;
txtShow.Text = str;
}
private void btnEight_Click(object sender, EventArgs e)
{
str += btnEight.Text;
txtShow.Text = str;
}
private void btnNine_Click(object sender, EventArgs e)
{
str += btnNine.Text;
txtShow.Text = str;
}
private void btnZero_Click(object sender, EventArgs e)
{
str += btnZero.Text;
txtShow.Text = str;
}
private void btnAdd_Click(object sender, EventArgs e)
{
if (a != '0')
{
str = txtShow.Text;
}
else
{
a = '+';
str += btnAdd.Text;
}
txtShow.Text = str;
}
private void btnSub_Click(object sender, EventArgs e)
{
if (a != '0')
{
str = txtShow.Text;
}
else
{
a = '-';
str += btnSub.Text;
}
txtShow.Text = str;
}
private void btnMul_Click(object sender, EventArgs e)
{
if (a != '0')
{
str=txtShow.Text;
}
else
{
a = '*';
str += btnMul.Text;
}
txtShow.Text = str;
}
private void btnDiv_Click(object sender, EventArgs e)
{
if (a != '0')
{
str = txtShow.Text;
}
else //else即为a已经被赋值运算符了
{
a = '/';
str += btnDiv.Text;
}
txtShow.Text = str;
}
private void btnEqual_Click(object sender, EventArgs e)
{
double re;
re=ShowResult(a,str);
txtShow.Text = Convert.ToString(re);
str = null;//在这部分里,我把str赋值为null这样子的话就不能够使算下来的结果再次进行加减,所以这句话后来我改成了
//str= Convert.ToString(re);
//之后我又加上了a='0',这样做也同样是为了起一次的结果能够再次进行运算,也就是a能够继续被赋值其他预算符
}
private void btnAc_Click(object sender, EventArgs e)
{
str = null;
txtShow.Text = null;
}
private void btnSpot_Click(object sender, EventArgs e)
{
str += btnSpot.Text;
txtShow.Text = str;
}
}
}
经过修改后,这个计算器已经能够进行简单的操作了,不过它与一般我们用的计算机相比还是有一些不方便。一般计算机,当我们写入1+2以后,如果再写入+3就会自动把1+2计算出来,然后再+3,但我做的必须是1+2=以后才能够再+3的。呵呵,不足之处,请多多指教了