Terrance Low Ответов: 1

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;
}

1 Ответов

Рейтинг:
2

K-SIS

с помощью Microsoft.На языке VisualBasic

вы можете использовать функцию VAL (), чтобы избежать вышеуказанной проблемы.