10-значный калькулятор проблемы в C# ASP.NET
Меня просят нажать кнопку "0", и она остается 0 вместо того, чтобы продолжать увеличивать "000000". Что я должен добавить в этот код?
<pre>#region EQUAL CALCULATION protected void Equal_Click(object sender, EventArgs e) { decimal output; //Check whether it has data or not try { Expression a = new Expression(lblExpression.Text); if (decimal.TryParse(a.Evaluate().ToString(), out output)) { lblResult.Text = output.ToString(); lblExpression.Text = ""; } } catch (Exception) { lblExpression.Text = lblExpression.Text; lblResult.Text = "Invalid Calculation"; } } #endregion #region BUTTON FUNCTION protected void Btn1_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button1.Text; } protected void Btn2_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button2.Text; } protected void Btn3_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button3.Text; } protected void Btn4_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button4.Text; } protected void Btn5_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button5.Text; } protected void Btn6_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button6.Text; } protected void Btn7_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button7.Text; } protected void Btn8_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button8.Text; } protected void Btn9_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button9.Text; } protected void Btn0_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + button0.Text; } #endregion #region OPERATOR protected void Decimal_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + Decimal.Text; } protected void Plus_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + Plus.Text; } protected void Minus_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + Minus.Text; } protected void Divide_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + Divide.Text; } protected void Multiply_Click(object sender, EventArgs e) { lblExpression.Text = lblExpression.Text + Multiply.Text; } #endregion protected void Reset_Click(object sender, EventArgs e) { lblExpression.Text = ""; lblResult.Text = "0"; } protected void Back_Click(object sender, EventArgs e) { //remove by 1 integer string s = ""; if (lblExpression.Text.Length > 1) { s = lblExpression.Text; s = s.Substring(0, s.Length- 1); } lblExpression.Text = s; }
Что я уже пробовал:
Я не знаю, куда мне добавить
F-ES Sitecore
Подумайте об этом в терминах алгоритмов или псевдокода. То, что у вас есть, это
когда button0 нажал
выход = выход + "0"
конец когда
Поэтому, когда вы нажимаете 0 три раза, вы получаете "000", хотя то, что вы хотите, больше похоже на
когда button0 нажал
если выход не равен "0", то
выход = выход + "0"
конец, если
конец когда
Таким образом, когда вы нажимаете "0" один раз, вы получаете "0", но когда вы нажимаете его снова, выход уже "0", так что ничего не происходит. Вам просто нужно превратить это в код, и не просите меня сделать это за вас, мы здесь не для того, чтобы делать вашу домашнюю работу.
ZurdoDev
Пожалуйста, опубликуйте в качестве решения.
Richard Deeming
Вы можете комбинировать множество этих обработчиков событий, а не иметь много дублированного кода:
protected void Button_Click(object sender, EventArgs e) { var button = (Button)sender; lblExpression.Text = lblExpression.Text + button.Text; }