【问题标题】:Stumped on calculator operations in C#难倒在 C# 中的计算器操作
【发布时间】:2012-02-12 00:44:44
【问题描述】:

我正在使用 Windows 窗体应用程序制作计算器,但目前我很困惑。 到目前为止,这是我的应用程序,它只能做加法,但可以做任意数量的数字。

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 Form1 : Form
{
    int num;
    int answer = 0;
    int i;


    public Form1()
    {
        InitializeComponent();
    }



    private void plusButton_Click(object sender, EventArgs e)
    {          
        answer += System.Convert.ToInt32(textBox1.Text);            
        ClearTextbox();
    }

    private void minusButton_Click(object sender, EventArgs e)
    {
        //answer -= System.Convert.ToInt32(textBox1.Text);
        //ClearTextbox();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void divideButton_Click(object sender, EventArgs e)
    {

    }

    private void multiplyButton_Click(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        num = 1;
        displayInt(num);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        num = 2;
        displayInt(num);
    }

    private void button3_Click(object sender, EventArgs e)
    {
        num = 3;
        displayInt(num);
    }

    private void button4_Click(object sender, EventArgs e)
    {
        num = 4;
        displayInt(num);
    }

    private void button5_Click(object sender, EventArgs e)
    {
        num = 5;
        displayInt(num);
    }

    private void button6_Click(object sender, EventArgs e)
    {
        num = 6;
        displayInt(num);
    }

    private void button7_Click(object sender, EventArgs e)
    {
        num = 7;
        displayInt(num);
    }

    private void button8_Click(object sender, EventArgs e)
    {
        num = 8;
        displayInt(num);
    }

    private void button9_Click(object sender, EventArgs e)
    {
        num = 9;
        displayInt(num);
    }

    private void button0_Click(object sender, EventArgs e)
    {
        num = 0;
        displayInt(num);
    }

    private void resetButton_Click(object sender, EventArgs e)
    {
        ClearTextbox();
        num = 0;
        answer = 0;

    }

    public void displayInt(int num)
    {
        textBox1.Text = textBox1.Text + num.ToString();
    }

    public void ClearTextbox()
    {
        textBox1.Clear();
    }

    public void DisplayAnswer(int answer)
    {
        answer += System.Convert.ToInt32(textBox1.Text); //Answer = Answer + Textbox Stuff


        textBox1.Clear();
        textBox1.Text = answer.ToString();
    }

    private void equalsButton_Click(object sender, EventArgs e)
    {
        DisplayAnswer(answer);
        num = 0;
        answer = 0;
    }


}
}

我不确定是否有办法等到按下另一个数字键,然后执行 x + y。我听说过事件处理程序,但对我来说这是一个相当模糊的话题。

这是一张图片:http://img196.imageshack.us/img196/4127/12464e13e5154a949a9a457.png

*我希望它能够对超过 2 个数字进行运算。

谢谢!

【问题讨论】:

  • 所有 button_Click 例程都是事件处理程序!
  • 我可能会建议首先使事件处理程序与计算器按钮编号保持一致。 button_1click 处理的 7 按钮是通往精神错乱之路的必经之路。 ;)
  • @M.Babcock:恕我直言,一个简单的计算器是学习某些编程概念(如简单 UI、事件驱动编程、开始 OOP 等)的绝佳练习。如果您在这些复杂性方面有更多富有想象力的想法,请分享。
  • @PaulSasik- 我同意它为新程序员提供了好处。问题是它没有启发(这就是为什么我问它是否是家庭作业)。也许学习编程不再像我自学编程时那样涉及灵感或(通常是错误的)创新的快感。
  • @ArumugaWalters - 知道你的界限值得+1。我们中的许多人都没有为您做的一件事就是让 SO 可以帮助您度过难关。我已经这样做了大约 20 年(计算非专业经验),我知道我刚开始时没有这样的经历。

标签: c# methods calculator


【解决方案1】:

您的代码有点混乱,很难弄清楚您的意图。这段代码的帮助将很快到来。我建议关注this simple calculator tutorial。它很好地解释了概念和步骤,包括按钮事件。

【讨论】:

    【解决方案2】:

    您需要有一个“+”按钮和一个“=”按钮。那么你的计算器有两个数字字段和两个状态:

    1) 输入第一个数字

    2) 输入第二个数字

    你可以有一个变量来说明正在输入的数字。

    int field = 1;
    

    当按下数字按钮时,该数字必须附加到相应的字段中。

    当按下“+”按钮时,状态变为

    field = 2;
    

    现在数字将附加到第二个字段。

    当您按下“=”按钮时,将现在仍然是字符串的两个数字转换为int,将它们相加并输出到结果字段。将状态设置回

    field = 1;
    

    还有一个“清除”按钮可以清除字段并设置field = 1;


    注意:正如 Paul Sasik 所说,您的代码有点混乱。如果您给按钮起有意义的名称,例如 btnDigit1btnDigit2btnPlusbtnEqualsbtnClear,我会提供帮助。当您双击设计器中的按钮时,将创建像 btnPlus_Click 这样的事件处理程序。这比button17_Click 更清楚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 2016-04-04
      • 2014-04-15
      • 1970-01-01
      相关资源
      最近更新 更多