Массив --- список, показывающий все 0.Как исправить - PullRequest
0 голосов
/ 25 февраля 2019

Мне нужно закодировать массив, который отображает до 20 чисел, которые были введены в калькулятор.По какой-то причине мой код отображается ноль 20 раз.Я не могу понять, что я сделал неправильно, и я чувствую, что это что-то очевидное.Может кто-нибудь помочь, пожалуйста?Я действительно не хочу обманывать, я просто хочу, чтобы меня указали в правильном направлении.

 public partial class Form1 : Form
{

    int Count = 0;
    decimal Total = 0m;

    public Form1()
    {
        InitializeComponent();
    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        decimal Score = Convert.ToDecimal(txtScore.Text);

        Total += Score;
        Count++;

        decimal Average = Total / Count;

        txtTotal.Text = Total.ToString();
        txtCount.Text = Count.ToString();
        txtAverage.Text = Average.ToString();




    }

    private void btnClear_Click(object sender, EventArgs e)
    {

        int Count = 0;
        decimal Total = 0m;
        decimal Average = 0m;
        decimal Score = 0m;

        txtScore.Text = Score.ToString();
        txtAverage.Text = Average.ToString();
        txtTotal.Text = Total.ToString();
        txtCount.Text = Count.ToString();





        txtScore.Focus();

    }

    private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void btnDisplay_Click(object sender, EventArgs e)
    {

        decimal[] scores = new decimal[20];

        MessageBox.Show("The scores entered are " + Environment.NewLine +
            scores[0] + Environment.NewLine +
            scores[1] + Environment.NewLine +
            scores[2] + Environment.NewLine +
            scores[3] + Environment.NewLine +
            scores[4] + Environment.NewLine +
            scores[5] + Environment.NewLine +
            scores[6] + Environment.NewLine +
            scores[7] + Environment.NewLine +
            scores[8] + Environment.NewLine +
            scores[9] + Environment.NewLine +
            scores[10] + Environment.NewLine +
            scores[11] + Environment.NewLine +
            scores[12] + Environment.NewLine +
            scores[13] + Environment.NewLine +
            scores[14] + Environment.NewLine +
            scores[15] + Environment.NewLine +
            scores[16] + Environment.NewLine +
            scores[17] + Environment.NewLine +
            scores[18] + Environment.NewLine +
            scores[19] + Environment.NewLine, "Scores List");



    }
}

}

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы создаете новый массив пустых десятичных знаков при каждом нажатии btnDisplay.Вот почему он всегда отображает 20 0.

Вам необходимо изменить область действия массива, чтобы к нему можно было обращаться во всем вашем классе.Это означает, что вы затем будете использовать эту переменную в btnDisplay_click.Требуемое число должно быть вставлено в массив в btnAdd_Click.

 public partial class Form1 : Form
{

    int Count = 0;
    decimal Total = 0m;
    decimal[] scores = new decimal[20];

    public Form1()
    {
        InitializeComponent();
    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        decimal Score = Convert.ToDecimal(txtScore.Text);

        //Add the score to the array
        scores[Count] = Score;

        Total += Score;
        Count++;

        decimal Average = Total / Count;

        txtTotal.Text = Total.ToString();
        txtCount.Text = Count.ToString();
        txtAverage.Text = Average.ToString();

    }

    private void btnClear_Click(object sender, EventArgs e)
    {

        int Count = 0;
        decimal Total = 0m;
        decimal Average = 0m;
        decimal Score = 0m;

        txtScore.Text = Score.ToString();
        txtAverage.Text = Average.ToString();
        txtTotal.Text = Total.ToString();
        txtCount.Text = Count.ToString();


        txtScore.Focus();

    }

    private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void btnDisplay_Click(object sender, EventArgs e)
    {

        MessageBox.Show("The scores entered are " + Environment.NewLine +
            scores[0] + Environment.NewLine +
            scores[1] + Environment.NewLine +
            scores[2] + Environment.NewLine +
            scores[3] + Environment.NewLine +
            scores[4] + Environment.NewLine +
            scores[5] + Environment.NewLine +
            scores[6] + Environment.NewLine +
            scores[7] + Environment.NewLine +
            scores[8] + Environment.NewLine +
            scores[9] + Environment.NewLine +
            scores[10] + Environment.NewLine +
            scores[11] + Environment.NewLine +
            scores[12] + Environment.NewLine +
            scores[13] + Environment.NewLine +
            scores[14] + Environment.NewLine +
            scores[15] + Environment.NewLine +
            scores[16] + Environment.NewLine +
            scores[17] + Environment.NewLine +
            scores[18] + Environment.NewLine +
            scores[19] + Environment.NewLine, "Scores List");

    }

}

Массив также необходимо очистить в btnClear_Click.

0 голосов
/ 25 февраля 2019

В btnDisplay_Click вы создаете массив scores, но вы ничего не помещаете в него.затем вы отображаете его содержание.Он показывает 20 нулей, как и ожидалось.

Вы должны сделать scores полем, если хотите заполнить его btnAdd_Click.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...