winforms x^y计算器按钮-Windows窗体中的C#

ttp71kqs  于 2022-11-16  发布在  Windows
关注(0)|答案(2)|浏览(222)
`String calcHistory = "";
    String SavedCalcHistory = "";
    String result = "";
    String equation = "";
    String baseNum = "";
    double num;
    Boolean exponentFlag = false;`

private void digits_Click(object sender, EventArgs e)
    {
        Button b = (Button)sender;
        equation += b.Text;
        textBox1.Text += b.Text;
    }

private void ExponentInput_Click(object sender, EventArgs e)
    {
        baseNum = textBox1.Text;
        textBox1.Text = "";
        exponentFlag = true;
    }

private void equals_Click(object sender, EventArgs e)
    {
        result = equation;
        result = new DataTable().Compute(result, null).ToString();
        calcHistory += equation + " = " + result + "\n";
        textBox1.Text = result;
        if(exponentFlag == true)
        {
            num = Convert.ToDouble(baseNum);
            double expo = Convert.ToDouble(textBox1.Text);
            textBox1.Text = Math.Pow(num, expo).ToString();
        }
        exponentFlag = false;
    }

数字按钮上引用了Digit_click。
Exponent_Click在x^y按钮上引用。用户输入一个数字,单击x^y按钮,输入数字(指数)
点击=按钮时,如果equals_click中的Exponent标志为true,则将第一个输入和第二个输入转换为双精度型并传递给Math.Pow()。将结果转换为String并显示在文本框中。
只有一个文本字段。
2^2给我419,000。

t1rydlwq

t1rydlwq1#

在计算结果之前,首先需要检查指数标志。另外,calcHistory可能也需要正确更新。

private void equals_Click(object sender, EventArgs e)
{
    if (exponentFlag == true)
    {
        num = Convert.ToDouble(baseNum);
        double expo = Convert.ToDouble(textBox1.Text);
        result = Math.Pow(num, expo).ToString();
        exponentFlag = false;
        equation = "" + baseNum + "^" + expo;
    }
    else
    {
        result = equation;
        result = new DataTable().Compute(result, null).ToString();
    }
    textBox1.Text = result;
    calcHistory += equation + " = " + result + "\n";
}

其他注意事项:

  • 您确实想学习how to debug small programs,特别是如何使用调试器和设置断点,以便可以一步一步地看到正在发生的事情。
  • 使用string代替String
  • 使用bool代替Boolean
  • if (exponentFlag == true)if (exponentFlag)相同
  • result = exponent这样的东西是令人困惑的,因为指数显然不是结果。
  • num可以是局部变量
0lvr5msh

0lvr5msh2#

假设您有textBox1用于integer1textBox2用于integer2。您还有**"x^y"按钮和"="按钮。还有textBox3**用于您的结果。
现在你要做的是通过检查它们是否等于string.empty等来确保提供的数字是否正确。
如果确定,可以使用简单的:

int integer1 = Convert.ToInt32(textBox1.Text);
int integer2 = Convert.ToInt32(textBox2.Text);

textBox3.Text = Convert.ToInt32(Math.Pow(integer1 , integer2 )).ToString();

对我来说很管用,看看吧。
但是
更新:
如果您的计算器只有一个textBox,您也可以这样做:

int indexOfPower = textBox3.Text.IndexOf("^");
int integer1 = Convert.ToInt32(textBox3.Text.Substring(0, indexOfPower));
int integer2 = Convert.ToInt32(textBox3.Text.Substring(indexOfPower+1));

textBox3.Text = Convert.ToInt32(Math.Pow(integer1, integer2)).ToString();

相关问题