2015-05-17 31 views
-1

我正在制作一个简单的计算器。到目前为止,我已经成功地在我的计算器中实现了一些基本功能。看看代码在C中使用括号()计算器#

public double num1 { get; set; } 
     public double num2 { get; set; } 
     public string op { get; set; } 
     // public bool checker { get; set; } 

     private void ButtonBase_OnClick1(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button1.Content.ToString(); 
      ShowTextBlock.Text += Button1.Content.ToString(); 
     } 

     private void ButtonBase_OnClick2(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button2.Content.ToString(); 
      ShowTextBlock.Text += Button2.Content.ToString(); 
     } 

     private void ButtonBase_OnClick3(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button3.Content.ToString(); 
      ShowTextBlock.Text += Button3.Content.ToString(); 
     } 

     private void ButtonBase_OnClick4(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button4.Content.ToString(); 
      ShowTextBlock.Text += Button4.Content.ToString(); 
     } 

     private void ButtonBase_OnClick5(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button5.Content.ToString(); 
      ShowTextBlock.Text += Button5.Content.ToString(); 
     } 

     private void ButtonBase_OnClick6(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button6.Content.ToString(); 
      ShowTextBlock.Text += Button6.Content.ToString(); 
     } 

     private void ButtonBase_OnClick7(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button7.Content.ToString(); 
      ShowTextBlock.Text += Button7.Content.ToString(); 
     } 

     private void ButtonBase_OnClick8(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button8.Content.ToString(); 
      ShowTextBlock.Text += Button8.Content.ToString(); 
     } 

     private void ButtonBase_OnClick9(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button9.Content.ToString(); 
      ShowTextBlock.Text += Button9.Content.ToString(); 
     } 

     private void ButtonBase_OnClick0(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Button0.Content.ToString(); 
      ShowTextBlock.Text += Button0.Content.ToString(); 
     } 

     private void ButtonBase_OnClickdot(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Buttondot.Content.ToString(); 
      ShowTextBlock.Text += Buttondot.Content.ToString(); 
     } 

     private void ButtonBase_OnClickobrac(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Buttonobrac.Content; 
      ShowTextBlock.Text += Buttonobrac.Content.ToString(); 
     } 

     private void ButtonBase_OnClickcbrac(object sender, RoutedEventArgs e) 
     { 
      CalculateTextBlock.Text += Buttoncbrac.Content; 
      ShowTextBlock.Text += Buttoncbrac.Content.ToString(); 
     } 



     //private void ButtonBase_OnClickinf(object sender, RoutedEventArgs e) 
     //{ 
     // CalculateTextBlock.Text += ("0/0").ToString(); 
     // ShowTextBlock.Text += "Inf."; 
     //} 

     private void ButtonBase_OnClickplus(object sender, RoutedEventArgs e) 
     { 
      //num1 += double.Parse(CalculateTextBlock.Text); 
      num1 = Convert.ToDouble(CalculateTextBlock.Text); 
      op = "plus"; 
      CalculateTextBlock.Text = ""; 
      ShowTextBlock.Text += "+"; 
     } 

     private void ButtonBase_OnClickminus(object sender, RoutedEventArgs e) 
     { 
      num1 += double.Parse(CalculateTextBlock.Text); 
      op = "sub"; 
      CalculateTextBlock.Text = ""; 
      ShowTextBlock.Text += "-"; 
     } 

     private void ButtonBase_OnClickmul(object sender, RoutedEventArgs e) 
     { 
      num1 += double.Parse(CalculateTextBlock.Text); 
      op = "mul"; 
      CalculateTextBlock.Text = ""; 
      ShowTextBlock.Text += "*"; 
     } 

     private void ButtonBase_OnClickdiv(object sender, RoutedEventArgs e) 
     { 
      num1 += double.Parse(CalculateTextBlock.Text); 
      op = "div"; 
      CalculateTextBlock.Text = ""; 
      ShowTextBlock.Text += "/"; 
     } 

     private void ButtonBase_OnClickequal(object sender, RoutedEventArgs e) 
     { 
      switch (op) 
      { 
       case "plus" : 
        //num2 = num1 + double.Parse(CalculateTextBlock.Text); 
        num2 = num1 + Convert.ToDouble(CalculateTextBlock.Text); 
        break; 

       case "sub": 
        num2 = num1 - double.Parse(CalculateTextBlock.Text); 
        break; 

       case "mul": 
        num2 = num1*double.Parse(CalculateTextBlock.Text); 
        break; 

       case "div": 
        num2 = num1/double.Parse(CalculateTextBlock.Text); 
        break; 
      } 
      CalculateTextBlock.Text = num2.ToString(); 
      num1 = 0; 
      ShowTextBlock.Text = ""; 

     } 

     private void ButtonBase_OnClickclear(object sender, RoutedEventArgs e) 
     { 
      num1 = 0; 
      num2 = 0; 
      ShowTextBlock.Text = ""; 
      CalculateTextBlock.Text = ""; 
     } 

将括号插入calculatetextbox时会出现问题。它在解析时抛出一个FormatException。有什么方法可以在这里实施BIDMAS吗?

注:我曾经尝试都解析和转换方法{int.parse和转换}

任何帮助表示赞赏。由于

+0

是否所有这些代码真的有必要吗?我认为你应该只显示那些需要得到很好答案的部分。 – Mohayemin

+0

@Mohayemin他们只是计算器的计算部分。对于任何第一次看到此代码的人,我都会很容易理解我想要做的事情。只有数字按钮部分不是必需的。 – Prajjwal

+4

BIDMAS需要更复杂的代码。你可能需要做的是解析你的字符串来计算括号对,从最外部到最内部。然后,如果找到括号,则评估其内容(可能包含更多的括号),递归地重复此操作直到找不到括号,然后返回评估结果。 –

回答

0

好像它只是缺少的ToString您Bottonobrac.Content()的转换中,你必须在你的Buttondot.Content

private void ButtonBase_OnClickdot(object sender, RoutedEventArgs e) 
    { 
     CalculateTextBlock.Text += Buttondot.Content.ToString(); //You have it here 
     ShowTextBlock.Text += Buttondot.Content.ToString(); 
    } 

    private void ButtonBase_OnClickobrac(object sender, RoutedEventArgs e) 
    { 
     CalculateTextBlock.Text += Buttonobrac.Content; //Add .ToString() 
     ShowTextBlock.Text += Buttonobrac.Content.ToString(); 
    } 

这应该解决您的问题。同时,您可以使用compile and execute c# online来测试代码中缺少的内容。

+0

我以前试过tostring方法。它只是抛出FormatException。这就是为什么我尝试删除“ToString”方法。 – Prajjwal

0

试试这个: -

<script type="text/javascript"> 
     function Calculate() { 

      var expression = document.getElementById('<%=this.TextBox1.ClientID%>').value; 
      var result = eval(expression); 
      var hidden = document.getElementById('<%=this.hdfResult.ClientID%>'); 
      hidden.value = result; 

     } 
    </script> 

和按钮单击事件写这OnClientClick="Calculate();即调用脚本。 欲了解更多信息,请通过这个Link

OR

试试这个

<form id="Calc" runat="server"> 
    <div> 

    <table border= "4"> 
    <tr> 
    <td> 
    <input type="text" name="Input" size="16" \> 
    <br /> 
    </td> 
    </tr> 
    <tr> 
    <td> 
    <input type="button" name="one" value=" 1 " onclick ="Calc.Input.value += '1'" \> 
    <input type="button" name="two" value=" 2 " onclick="Calc.Input.value += '2'" \> 
    <input type="button" name="three" value=" 3 " onclick="Calc.Input.value += '3'" \> 
    <input type="button" name="plus" value=" + " onclick="Calc.Input.value += ' + '" \> 
    <br /> 
    <input type="button" name="four" value=" 4 " onclick="Calc.Input.value += '4'" \> 
    <input type="button" name="five" value=" 5 " onclick="Calc.Input.value += '5'" \> 
    <input type="button" name="six" value=" 6 " onclick="Calc.Input.value += '6'" \> 
    <input type="button" name="minus" value=" - " onclick="Calc.Input.value += ' - '" \> 
    <br /> 
    <input type="button" name="seven" value=" 7 " onclick="Calc.Input.value += '7'" \> 
    <input type="button" name="eight" value=" 8 " onclick="Calc.Input.value += '8'" \> 
    <input type="button" name="nine" value=" 9 " onclick="Calc.Input.value += '9'" \> 
    <input type="button" name="times" value=" x " onclick="Calc.Input.value += ' * '" \> 
    <br /> 
    <input type="button" name="clear" value=" c " onclick="Calc.Input.value = ''" \> 
    <input type="button" name="zero" value=" 0 " onclick="Calc.Input.value += '0'" \> 
    <input type="button" name="DoIt" value=" = " onclick="Calc.Input.value = eval(Calc.Input.value)" \> 
    <input type="button" name="div" value="/" onclick="Calc.Input.value += '/'" \> 
    <br /> 
    </td> 
    </tr> 
    </table> </div> 
     </form> 
+0

...为什么你用JavaScript回答C#问题? –

+0

不能在C#中使用JavaScript# – Prajjwal

+0

Okkk但第二种方法正在工作.. –

0

@Prajjwal我也做了一个简单的计算器上的Microsoft Visual Studio Express的2013年网络。这是我的代码。看一看!希望它可以帮助:

public partial class Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void addButton_Click(object sender, EventArgs e) 
    { 
     double firstValue = double.Parse(firstTextBox.Text); 
     double secondValue = double.Parse(secondTextBox.Text); 
     double addValue = firstValue + secondValue; 
     resultLabel.Text = addValue.ToString(); 
    } 

    protected void subtractButton_Click(object sender, EventArgs e) 
    { 
     double firstValue = double.Parse(firstTextBox.Text); 
     double secondValue = double.Parse(secondTextBox.Text); 
     double addValue = firstValue - secondValue; 
     resultLabel.Text = addValue.ToString(); 
    } 

    protected void multiplicationButton_Click(object sender, EventArgs e) 
    { 
     double firstValue = double.Parse(firstTextBox.Text); 
     double secondValue = double.Parse(secondTextBox.Text); 
     double addValue = firstValue * secondValue; 
     resultLabel.Text = addValue.ToString(); 
    } 

    protected void divideButton_Click(object sender, EventArgs e) 
    { 
     double firstValue = double.Parse(firstTextBox.Text); 
     double secondValue = double.Parse(secondTextBox.Text); 
     double addValue = firstValue/secondValue; 
     resultLabel.Text = addValue.ToString(); 
    } 
} 
+0

感谢代码,但它不能解决括号问题。 – Prajjwal