C#简单计算器

时间:2014-07-29 08:31:24

标签: c# .net winforms

我正在练习编程,所以我可以擅长它,但我无法完成这个计算器代码。我无法对三个或更多数字进行加,减,乘或除。请帮忙。我的代码出了什么问题?

提前谢谢!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Calculator
{

public partial class frmMain : Form
{
    int oprtn;
    String firstNumber;
    String nextNumber;

    public frmMain()
    {
        InitializeComponent();
    }

    private void btn0_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn0.Text;
    }

    private void btn1_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn1.Text;
    }

    private void btn2_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn2.Text;
    }

    private void btn3_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn3.Text;
    }

    private void btn4_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn4.Text;
    }

    private void btn5_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn5.Text;
    }

    private void btn6_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn6.Text;
    }

    private void btn7_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn7.Text;
    }

    private void btn8_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn8.Text;
    }

    private void btn9_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + btn9.Text;
    }

    private void btnClear_Click(object sender, EventArgs e)
    {
        txtShow.Clear();
    }

    private void btnSubtract_Click(object sender, EventArgs e)
    {
        firstNumber = txtShow.Text;
        oprtn = 2;
        txtShow.Text = "";            
    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        firstNumber = txtShow.Text;

        oprtn = 1;
        txtShow.Text = "";
    }

    private void btnDivide_Click(object sender, EventArgs e)
    {
        firstNumber = txtShow.Text;
        oprtn = 4;
        txtShow.Text = "";  
    }

    private void btnMultiply_Click(object sender, EventArgs e)
    {
        firstNumber = txtShow.Text;
        oprtn = 3;
        txtShow.Text = "";           
    }


    private void btnEquals_Click(object sender, EventArgs e)
    {
        nextNumber = txtShow.Text;
        int num1 = Convert.ToInt32(firstNumber);
        int num2 = Convert.ToInt32(nextNumber);


        switch (oprtn)
        {
            case 1:
                int sum = num1 + num2;
                String equals = Convert.ToString(sum);  
                sum = sum + num2;
                txtShow.Text = equals;
                break;
            case 2:
                int difference = num1 - num2;                  
                equals = Convert.ToString(difference);
                difference = difference - num2;
                txtShow.Text = equals;
                break;
            case 3:
                int product = num1 * num2;
                equals = Convert.ToString(product);
                product = product * num2;
                txtShow.Text = equals;
                break;
            case 4:
                int quotient = num1 / num2;                   
                equals = Convert.ToString(quotient);
                quotient = quotient / num2;
                txtShow.Text = equals;
                break;
        }
    }

    private void btnBackspace_Click(object sender, EventArgs e)
    {


    }

    private void txtShow_TextChanged(object sender, EventArgs e)
    {

    }

    private void btnPoint_Click(object sender, EventArgs e)
    {
        txtShow.Text = txtShow.Text + ".";
    }
}

}

1 个答案:

答案 0 :(得分:0)

使用您当前的解决方案,您无法在不按= =的情况下添加两个以上的数字。

这是怎么回事:

 >3
 //Number '3' is stored in txtShow.Text
 >3+
 //'3' is stored in nextNumber
 >3+3
 //Number '3' is stored in txtShow.Text again
 >3+3+
 //'3' is stored in nextNumber, overriding the first number
 >3+3+3
 //Number '3' is stored in txtShow.Text again
 >3+3+3=
 //Calculation is done, but nextNumber contains '3', and then 3 is added, yielding 6

最简单的解决方案是每次按下操作员时执行数学运算。因此,您需要先计算3+3=6,然后再添加3。