Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未在计算器应用程序中存储运算符_C#_Windows - Fatal编程技术网

C# 未在计算器应用程序中存储运算符

C# 未在计算器应用程序中存储运算符,c#,windows,C#,Windows,我觉得这有点奇怪。我的代码在运算符未更改的情况下工作,例如2*2*2给我8,但是,当我更改运算符时,它不工作-它转到最后一个运算符。也就是说,当我点击像:9*6/4这样的东西时,它会在除法处阻止我,所以,它给我9*6,当我点击/,答案是1.5。是否未存储来自操作员的信息?如有任何含糊或准确的建议,将不胜感激。这很奇怪,因为如果使用同一个操作符,它就会工作 public partial class Form1 : Form { string buffer = " "; char

我觉得这有点奇怪。我的代码在运算符未更改的情况下工作,例如2*2*2给我8,但是,当我更改运算符时,它不工作-它转到最后一个运算符。也就是说,当我点击像:9*6/4这样的东西时,它会在除法处阻止我,所以,它给我9*6,当我点击/,答案是1.5。是否未存储来自操作员的信息?如有任何含糊或准确的建议,将不胜感激。这很奇怪,因为如果使用同一个操作符,它就会工作

public partial class Form1 : Form
{

    string buffer = " ";
    char op;
    double[] operand = new double[2];
    double result;
    int step = 1;

    public Form1()
    {
        InitializeComponent();
    }

    private void NumberButtons(object sender, EventArgs e)
    {
        Button b = sender as Button;

        buffer += b.Text;
        txtBox.Text = buffer;
    }

    private void Dot(object sender, EventArgs e)
    {
        if (!buffer.Contains('.'))
        {
            buffer = buffer + ".";
            txtBox.Text = buffer;
        }
    }

    private void Operations(object sender, EventArgs e)
    {
        Button b = (sender as Button);
        op = b.Text[0];
        if (buffer.Length == 0)
            operand[step - 1] = result;
        else
            operand[step - 1] = Double.Parse(buffer);
        if (step == 2)
        {
            Result(null, null);
            operand[0] = result;
            step = 2;
        }
        else
        { 
            txtBox.Text = operand[0].ToString();
            step++;
            buffer = "";
        }
    }
    private void Result(object sender, EventArgs e)
    {
        if (buffer.Length != 0)
            operand[1] = Double.Parse(buffer);
        switch (op)
        {
            case '+':
                result = operand[0] + operand[1];
                break;
            case '-':
                result = operand[0] - operand[1];
                break;
            case '*':
                result = operand[0] * operand[1];
                break;
            case '/':
                result = operand[0] / operand[1];
                break;
        }
        txtBox.Text = result.ToString();
        step = 1;
        buffer = " ";
    }
    private void Clear(object sender, EventArgs e)
    {
        if (buffer.Length == 0)
        {
            step = 1;
            operand[0] = operand[1] = 0.0;
            op = ' ';
            result = 0.0;
        }
        else
            buffer = "";
        txtBox.Text = buffer;
    }
}

}

6/4=1.5。仅供参考。@StefanDenchev所以是9/6(我认为在本例中更相关),原因是:
if(step==2).
,基本上您已经将操作设置为新值,所以它使用了该值。。需要返工,我遇到过一次异常,但不确定它是关于什么的:P。应该可以帮助你开始。当然,有点:P。。。如果这是你的意思,它会编译。。。