【发布时间】:2018-04-06 07:23:31
【问题描述】:
我最近刚刚完成了我的第一个 Windows 窗体计算器,它运行良好,但我的问题是 - 我如何在计算等号之前添加第三个甚至第四个数字?我一直在尝试将 ThirdNumber 变量放在我的代码中的多个不同位置,就像这样 --
private void bequal_Click(object sender, EventArgs e)
{
double SecondNumber;
double ThirdNumber;
double Result;
SecondNumber = Convert.ToDouble(textBox1.Text);
ThirdNumber = Convert.ToDouble(textBox1.Text);
if (Operation == "+")
{
Result = (FirstNumber + SecondNumber) + ThirdNumber;
textBox1.Text = Convert.ToString(Result);
FirstNumber = Result;
}
但是,每次我得到的答案都是错误的(例如,6 + 6 + 8 = 22,当我知道它应该是 20 时)。有人可以为我指出如何解决这个缺陷的正确方向,请记住,我仍然是一个初学者,所以任何和所有的建议和信息都将不胜感激
谢谢
我的应用程序代码的其余部分 --
public partial class Form1 : Form
{
double FirstNumber;
string Operation;
public Form1()
{
InitializeComponent();
}
private void n1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "0" && textBox1.Text != null) // If the textbox value is 0 or is not null then
{ // the number that corresponds to the button that is clicked
textBox1.Text = "1"; // will be subsituted in
}
else
{ // Else add the button value to the existing text box value
textBox1.Text = textBox1.Text + "1";
}
}
private void n2_Click(object sender, EventArgs e)
{
if(textBox1.Text == "0" && textBox1.Text != null)
{
textBox1.Text = "2";
}
else
{
textBox1.Text = textBox1.Text + "2";
}
}
private void n3_Click(object sender, EventArgs e)
{
if(textBox1.Text == "0" && textBox1.Text != null)
{
textBox1.Text = "3";
}
else
{
textBox1.Text = textBox1.Text + "3";
}
}
private void n4_Click(object sender, EventArgs e)
{
if(textBox1.Text == "0" && textBox1.Text != null)
{
textBox1.Text = "4";
}
else
{
textBox1.Text = textBox1.Text + "4";
}
}
private void n5_Click(object sender, EventArgs e)
{
if(textBox1.Text == "0" && textBox1.Text != null)
{
textBox1.Text = "5";
}
else
{
textBox1.Text = textBox1.Text + "5";
}
}
private void n6_Click(object sender, EventArgs e)
{
if(textBox1.Text == "0" && textBox1.Text != null)
{
textBox1.Text = "6";
}
else
{
textBox1.Text = textBox1.Text + "6";
}
}
private void n7_Click(object sender, EventArgs e)
{
if(textBox1.Text == "0" && textBox1.Text != null)
{
textBox1.Text = "7";
}
else
{
textBox1.Text = textBox1.Text + "7";
}
}
private void n8_Click(object sender, EventArgs e)
{
if(textBox1.Text == "0" && textBox1.Text != null)
{
textBox1.Text = "8";
}
else
{
textBox1.Text = textBox1.Text + "8";
}
}
private void n9_Click(object sender, EventArgs e)
{
if(textBox1.Text == "0" && textBox1.Text != null)
{
textBox1.Text = "9";
}
else
{
textBox1.Text = textBox1.Text + "9";
}
}
private void n0_Click(object sender, EventArgs e)
{
textBox1.Text = textBox1.Text + "0";
}
private void bad_Click(object sender, EventArgs e)
{
FirstNumber = Convert.ToDouble(textBox1.Text);
textBox1.Text = "0";
Operation = "+";
}
private void sub_Click(object sender, EventArgs e)
{
FirstNumber = Convert.ToDouble(textBox1.Text);
textBox1.Text = "0";
Operation = "-";
}
private void bmul_Click(object sender, EventArgs e)
{
FirstNumber = Convert.ToDouble(textBox1.Text);
textBox1.Text = "0";
Operation = "*";
}
private void bdiv_Click(object sender, EventArgs e)
{
FirstNumber = Convert.ToDouble(textBox1.Text);
textBox1.Text = "0";
Operation = "/";
}
private void bc_Click(object sender, EventArgs e)
{
textBox1.Text = "0";
}
private void bdot_Click(object sender, EventArgs e)
{
textBox1.Text = textBox1.Text + ",";
}
private void bequal_Click(object sender, EventArgs e)
{
double SecondNumber;
double ThirdNumber;
double Result;
SecondNumber = Convert.ToDouble(textBox1.Text);
ThirdNumber = Convert.ToDouble(textBox1.Text);
if (Operation == "+")
{
Result = (FirstNumber + SecondNumber) + ThirdNumber;
textBox1.Text = Convert.ToString(Result);
FirstNumber = Result;
}
else if (Operation == "-")
{
Result = (FirstNumber - SecondNumber);
textBox1.Text = Convert.ToString(Result);
FirstNumber = Result;
}
else if (Operation == "*")
{
Result = (FirstNumber * SecondNumber);
textBox1.Text = Convert.ToString(Result);
FirstNumber = Result;
}
else if (Operation == "/")
{
if (SecondNumber == 0)
{
textBox1.Text = "Cannot divide by zero";
}
else
{
Result = (FirstNumber / SecondNumber);
textBox1.Text = Convert.ToString(Result);
FirstNumber = Result;
}
}
}
}
【问题讨论】:
-
能否打个断点,验证一下参数的值是否正确?
-
不是你的问题的答案,但我前段时间遇到过类似的问题,最后使用了这个:github.com/pieterderycke/Jace
-
Damon,你有没有试过调试你的代码,即逐行检查它出了什么问题?
-
我不清楚是什么过程导致您认为连续两次访问同一个文本框会以某种方式产生不同的值。
标签: c# calculator