首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的C#计算器不会计算超过2个连续数字

我的C#计算器不会计算超过2个连续数字
EN

Stack Overflow用户
提问于 2018-04-06 15:23:32
回答 2查看 579关注 0票数 1

我最近刚刚完成了我的第一个Windows窗体计算器,它工作得很好,但我的问题是-如何在命中等号之前将第三个甚至第四个数字添加到计算中?我一直在尝试将ThirdNumber变量放在代码中的许多不同位置,如下所示--

代码语言:javascript
复制
  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)。请告诉我如何修复这个缺陷的正确方向,并请记住,我还是一个初学者,所以任何建议和信息都将不胜感激。

谢谢

我应用程序的其余代码--

代码语言:javascript
复制
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;
            }
        }
    }
}
EN

Stack Overflow用户

发布于 2018-04-06 15:42:51

代码语言:javascript
复制
private void bdiv_Click(object sender, EventArgs e)
{
    FirstNumber = Convert.ToDouble(textBox1.Text);
    textBox1.Text = "0";
    Operation = "/";
}

每次你按下'+‘键,第一个数字就会被重置,它的旧值就会丢失。

代码语言:javascript
复制
    SecondNumber = Convert.ToDouble(textBox1.Text);
    ThirdNumber = Convert.ToDouble(textBox1.Text);

第二个和第三个数字总是相同的。

6+6+8在你的计算器中是22,因为它实际计算的是6+8+8,在第二次加法操作中丢失了一个6。和8是重复的,因为第二个和第三个数字都等于textBox1.Text。

解决方案:

使用+=操作

代码语言:javascript
复制
private void bdiv_Click(object sender, EventArgs e)
{
   FirstNumber += Convert.ToDouble(textBox1.Text);
   textBox1.Text = "0";
   Operation = "/";
}

并删除SecondNumber变量。

代码语言:javascript
复制
SecondNumber = Convert.ToDouble(textBox1.Text); // remove this line
ThirdNumber = Convert.ToDouble(textBox1.Text);

不需要第二个数字,因为它现在在FirstNumber变量中。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49687507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档