【问题标题】:C# Simple Calculator [closed]C# 简单计算器 [关闭]
【发布时间】:2014-07-29 08:31:24
【问题描述】:

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

提前谢谢你!

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 + ".";
    }
}

}

【问题讨论】:

  • 我的代码有什么问题? ....你的代码有什么问题?
  • 我不能添加三个或更多的数字。 (例如:3+3+3)
  • 为什么不......你得到一个异常,还是错误的结果?
  • 这是一个功能齐全的计算器:new DataTable().Compute("1+5-7/5*3", null)
  • 无论如何都不应该编译。 btnEquals_Click 方法中的 equals 变量是什么?它没有在任何地方声明。

标签: c# .net winforms


【解决方案1】:

使用您当前的解决方案,如果不先按 =,您不能添加两个以上的数字。

会发生什么:

 >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。

【讨论】:

    猜你喜欢
    • 2022-10-24
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多