本文介绍了怎样做计算器可以做两个以上的操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想用c#语言在windows商店中制作计算器,但是我有一个问题,计算器可以一次做两个操作,例如:1 + 2,3 * 5。我想制作一次可以做多次操作的计算器,例如:1 + 4 + 6 + 7,6 / 3 * 3.
这里是代码:
I want to make calculator in windows store with c# language, But i have a problem, the calculator just can do two operation at once, for example: 1+2, 3*5. I want to make calculator that can do many operation at once, for example: 1+4+6+7, 6/3*3.
And here is the code:
public sealed partial class MainPage : Page
{
string op1;
string op2;
string op;
bool first = true;
bool evaluated = false;
public MainPage()
{
this.InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (!evaluated)
{
Button button = (sender) as Button;
string val = button.Content.ToString();
switch (val)
{
// values setting
case "1":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "2":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "3":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "4":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "5":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "6":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "7":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "8":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "9":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case "0":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
case ".":
if (first) { op1 = op1 + val; FinalResult.Text = op1; } else { op2 = op2 + val; FinalResult.Text = op2; };
break;
// operators selection
case "+":
if (first) { first = false; } else { OperatorLocked(Convert.ToChar(val)); }
Expression.Text = op1 + " " + val;
FinalResult.Text = "0";
op = val;
break;
case "-":
if (first) { first = false; } else { OperatorLocked(Convert.ToChar(val)); }
Expression.Text = op1 + " " + val;
FinalResult.Text = "0";
op = val;
break;
case "*":
if (first) { first = false; } else { OperatorLocked(Convert.ToChar(val)); }
Expression.Text = op1 + " " + val;
FinalResult.Text = "0";
op = val;
break;
case "/":
if (first) { first = false; } else { OperatorLocked(Convert.ToChar(val)); }
Expression.Text = op1 + " " + val;
FinalResult.Text = "0";
op = val;
break;
case "%":
if (first)
{
new MessageDialog("Please select a statement of which you want to get the percentage.").ShowAsync();
}
else
{
if (op == "/")
{
// get percentage
FinalResult.Text = ((Convert.ToDouble(op1) / Convert.ToDouble(op2)) * 100).ToString();
op1 = "";
op2 = "";
op = "";
evaluated = true;
}
else
{
new MessageDialog("Only percentage is allowed.\n\nFor instance, Only division operator is allowed. value1 / value 2 and then press % to get their percentage.").ShowAsync();
}
}
break;
case "←":
if (first)
{
if (op1 != null && op1.Length > 0)
{
op1 = op1.Substring(0, op1.Length - 1);
FinalResult.Text = op1;
}
else
{
FinalResult.Text = "0";
}
}
else
{
if (op2 != null && op2.Length > 0)
{
op2 = op2.Substring(0, op2.Length - 1);
FinalResult.Text = op2;
}
else
{
FinalResult.Text = "0";
}
}
break;
case "=":
switch (op)
{
default:
if (!first)
{
Evaluate(Convert.ToDouble(op1), Convert.ToDouble(op2), op);
op1 = "";
op2 = "";
op = "";
evaluated = true;
}
else
{
new MessageDialog("Two operands must be selected and an operator must be selected, before you can evaluate them.").ShowAsync();
}
break;
}
break;
}
}
else
{
FinalResult.Text = "0";
Expression.Text = "";
evaluated = false;
Button_Click(sender, e);
}
}
private void Evaluate(double op1, double op2, string op)
{
// Evaluate
switch (op)
{
case "+":
FinalResult.Text = (op1 + op2).ToString();
Expression.Text = op1 + " + " + op2 + " =";
break;
case "-":
FinalResult.Text = (op1 - op2).ToString();
Expression.Text = op1 + " - " + op2 + " =";
break;
case "*":
FinalResult.Text = (op1 * op2).ToString();
Expression.Text = op1 + " x " + op2 + " =";
break;
case "/":
FinalResult.Text = (op1 / op2).ToString();
Expression.Text = op1 + " / " + op2 + " =";
break;
}
}
private void OperatorLocked(char op)
{
new MessageDialog(op.ToString() + " is currently not available. \n\nYou can only select two operands currently.");
}
}
}
任何人都可以帮我制作可以做多次操作的计算器一次,例如:1 + 4 + 6 + 7,6 / 3 * 3?
Can anyone help me to make calculator that can do many operation at once, for example: 1+4+6+7, 6/3*3?
推荐答案
这篇关于怎样做计算器可以做两个以上的操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!