C#计算器,等号老不对?
C#计算器,等号老不对?
帮忙写个等号的代码.
private void button28_Click(object sender,EventArgs e)//等号
{
Single r;
string t = textBox1.Text;
int space = t.IndexOf(' ');\x05\x05\x05//搜索空格位置
string s1 = t.Substring(0,space);\x05\x05//s1保存第一个运算数,Substring(0,space)指定字符串的长度.0表示开始,space表示结束.
char op = Convert.ToChar(t.Substring(space + 1,1));//op保存运算符 convert 函数 用来转换数据类型
string s2 = t.Substring(space + 3,space);\x05//s2保存第二个运算数(Substring(space + 3,1)中”1”应改为space)
Single arg1 = Convert.ToSingle(s1);
Single arg2 = Convert.ToSingle(s2);\x05//将运算数从string转换为single
switch (op)
{
case '+':r = arg1 + arg2; break;
case '-':r = arg1 - arg2; break;
case '*':r = arg1 * arg2; break;
case '/':
if (arg2 == 0)
{
throw new ApplicationException("除0错误");
}
else { r = arg1 / arg2; } break;
default:throw new ApplicationException();
}
textBox1.Text = r.ToString();
这是我的,点等号的时候,老是出现:string s1 = t.Substring(0,space);说这句长度不能小于0.要给这个textbox一个初始值么?我的是VS2005
我建议你不要用SubString这样处理输入,毕竟输入几个空格不是你说设定死了的
最好还是把参数分开输入,然后验证,然后运算
public void ShowOperationResult()
{
double[] para = new double[2];
if (!double.TryParse(this.txtBox1.Text.Trim(),out para[0]))
{
MessageBox.Show("输入的第一个参数不合法.");
}
if (!double.TryParse(this.txtBox3.Text.Trim(),out para[1]))
{
MessageBox.Show("输入的第一个参数不合法.");
}
switch (this.txtBox2.Text.Trim())
{
// do operation
case "+":
case "-":
case "*":
case "/":
default:MessageBox.Show("sth");
}
}额。我没看懂。。txtbox和textbox是同一个东西么?你的意思是我还要再定义另外两个txtbox?我是菜鸟类型的。嗯,txtBox只是我重新给textBox起的名字而已对的,是重新定义两个文本框比如说2 - 5一个给2,一个给-,一个给5分开判断,都正确,再运算