簡體   English   中英

x^y 計算器按鈕 - 在 windows forms C#

[英]x^y calculator Button - in windows forms C#

   `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 標志為真,則將第一個輸入和第二個輸入轉換為雙精度並傳遞給 Math.Pow()。 將結果轉換為字符串並顯示在文本框中。

只有一個文本字段。

2^2 給我 419,000。

需要先檢查指數標志 - 在計算結果之前。 此外, 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";
}

其他注意事項:

  • 你真的很想學習如何調試小程序,尤其是如何使用調試器和設置斷點,這樣你就可以一步一步地看到發生了什么。
  • 使用string而不是String
  • 使用bool而不是Boolean
  • if (exponentFlag == true)if (exponentFlag)相同
  • result = exponent之類的東西令人困惑,因為指數顯然不是結果。
  • num可以是局部變量

假設您有integer1textBox1integer2textBox2 您還有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();

它對我有用,檢查一下。

更新:

如果你的計算器只有一個文本框,你也可以這樣做:

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM