我正在制作一个简单的计算器。到目前为止,我已经成功地在我的计算器中实现了一些基本功能。看看代码在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和转换}
任何帮助表示赞赏。由于
是否所有这些代码真的有必要吗?我认为你应该只显示那些需要得到很好答案的部分。 – Mohayemin
@Mohayemin他们只是计算器的计算部分。对于任何第一次看到此代码的人,我都会很容易理解我想要做的事情。只有数字按钮部分不是必需的。 – Prajjwal
BIDMAS需要更复杂的代码。你可能需要做的是解析你的字符串来计算括号对,从最外部到最内部。然后,如果找到括号,则评估其内容(可能包含更多的括号),递归地重复此操作直到找不到括号,然后返回评估结果。 –