大家好,我写了一个计算器,有两处地方不对
1:我点1+2,点一时它会显示1,然后点+2,它就变成了12,我用减,乘,除都没有出现这种情况,只有加号出错
2:点等号没反应
请高手帮忙解答我的代码:
/*
num1,num2,symbol,state定义在Form1.Designer.cs里
private float num1 = 0;
private float num2 = 0;
private char symbol;//符号
private int state = -1;
*/using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace MyCalculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ } private void display_TextChanged(object sender, EventArgs e)//显示框
{ } private void pressNumber(string s)//点击数时
{
if (display.Text.Equals("0"))
{
display.Text = "";
}
if (state == -1)
{
display.AppendText(s);
}
else if (state == 1)
{
display.Text = "";
state = 2;
display.AppendText(s);
}
else if (state == 2)
{
display.AppendText(s);
}
} private void button1_Click(object sender, EventArgs e)
{
pressNumber("1");
} private void button2_Click(object sender, EventArgs e)
{
pressNumber("2");
} private void button3_Click(object sender, EventArgs e)
{
pressNumber("3");
} private void button4_Click(object sender, EventArgs e)
{
pressNumber("4");
} private void button5_Click(object sender, EventArgs e)
{
pressNumber("5");
} private void button6_Click(object sender, EventArgs e)
{
pressNumber("6");
} private void button7_Click(object sender, EventArgs e)
{
pressNumber("7");
} private void button8_Click(object sender, EventArgs e)
{
pressNumber("8");
} private void button9_Click(object sender, EventArgs e)
{
pressNumber("9");
} private void button0_Click(object sender, EventArgs e)
{
pressNumber("0");
} private void buttonDot_Click(object sender, EventArgs e)//.
{
if (display.Text.Equals("0"))
{
display.Text = "";
}
if (!display.Text.Contains("."))
{
display.AppendText(".");
}
} private void pressSymbol(char c)
{
if (display.Text.Equals("0"))
{
return;
}
symbol = c;
num1 = Single.Parse(display.Text);
state = 1;
} private void buttonPlus_Click(object sender, EventArgs e)
{
pressSymbol('+');
} private void buttonJian_Click(object sender, EventArgs e)
{
pressSymbol('-');
} private void buttonCheng_Click(object sender, EventArgs e)
{
pressSymbol('*');
} private void buttonChu_Click(object sender, EventArgs e)
{
pressSymbol('/');
} private void buttonEqual_Click(object sender, EventArgs e)
{
string s = display.Text;
float result = 0;
if (s.Equals("0") || s.Equals("") || state == -1)
{
return;
}
num2 = Convert.ToSingle(display.Text);
switch (symbol)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
display.Text = result.ToString();
state = 1;
} private void buttonC_Click(object sender, EventArgs e)//使数为0
{
display.Text = "0";
state = -1;
}
}
}
1:我点1+2,点一时它会显示1,然后点+2,它就变成了12,我用减,乘,除都没有出现这种情况,只有加号出错
2:点等号没反应
请高手帮忙解答我的代码:
/*
num1,num2,symbol,state定义在Form1.Designer.cs里
private float num1 = 0;
private float num2 = 0;
private char symbol;//符号
private int state = -1;
*/using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace MyCalculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ } private void display_TextChanged(object sender, EventArgs e)//显示框
{ } private void pressNumber(string s)//点击数时
{
if (display.Text.Equals("0"))
{
display.Text = "";
}
if (state == -1)
{
display.AppendText(s);
}
else if (state == 1)
{
display.Text = "";
state = 2;
display.AppendText(s);
}
else if (state == 2)
{
display.AppendText(s);
}
} private void button1_Click(object sender, EventArgs e)
{
pressNumber("1");
} private void button2_Click(object sender, EventArgs e)
{
pressNumber("2");
} private void button3_Click(object sender, EventArgs e)
{
pressNumber("3");
} private void button4_Click(object sender, EventArgs e)
{
pressNumber("4");
} private void button5_Click(object sender, EventArgs e)
{
pressNumber("5");
} private void button6_Click(object sender, EventArgs e)
{
pressNumber("6");
} private void button7_Click(object sender, EventArgs e)
{
pressNumber("7");
} private void button8_Click(object sender, EventArgs e)
{
pressNumber("8");
} private void button9_Click(object sender, EventArgs e)
{
pressNumber("9");
} private void button0_Click(object sender, EventArgs e)
{
pressNumber("0");
} private void buttonDot_Click(object sender, EventArgs e)//.
{
if (display.Text.Equals("0"))
{
display.Text = "";
}
if (!display.Text.Contains("."))
{
display.AppendText(".");
}
} private void pressSymbol(char c)
{
if (display.Text.Equals("0"))
{
return;
}
symbol = c;
num1 = Single.Parse(display.Text);
state = 1;
} private void buttonPlus_Click(object sender, EventArgs e)
{
pressSymbol('+');
} private void buttonJian_Click(object sender, EventArgs e)
{
pressSymbol('-');
} private void buttonCheng_Click(object sender, EventArgs e)
{
pressSymbol('*');
} private void buttonChu_Click(object sender, EventArgs e)
{
pressSymbol('/');
} private void buttonEqual_Click(object sender, EventArgs e)
{
string s = display.Text;
float result = 0;
if (s.Equals("0") || s.Equals("") || state == -1)
{
return;
}
num2 = Convert.ToSingle(display.Text);
switch (symbol)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
display.Text = result.ToString();
state = 1;
} private void buttonC_Click(object sender, EventArgs e)//使数为0
{
display.Text = "0";
state = -1;
}
}
}
double num1 num2;
double.TryParse(display.Text,out num1) ;
double.TryParse(display.Text,out num2) ; 这样result = num1 + num2;
返回的就对了
double.TryParse(display.Text,out num2) ;
应该加哪呢?
分别替换到你给num1,num2赋值那两句。