0

C# で配列を使用してこのプログラムを作成しました。宿題です。私はほとんどすべてをプログラムに書き込んでいますが、配列をクリアすることに固執しています。私はそれを持っていると思っていましたが、どこが機能していないのかわかりません。

プログラムは非常に簡単です。ユーザーはスコアを入力し、「追加」ボタンを押します。その後、ユーザーはさらにスコア (0 から 100 まで) を入力できます。ユーザーが「表示」を選択すると、プログラムは入力されたスコアをソートし、メッセージボックスに表示します (完了)。ユーザーが「スコアをクリア」ボタンを押すと、プログラムはスコアをクリアします。テキストボックスをクリアするために書いてあり、そこにも「Scores.Clear();」と書いています。(Scores はリスト配列の名前です) そして、ユーザーが別のスコアを入力できるように、フォーカスをスコア入力テキスト ボックスに戻しました。

私が使用している本は、タイプ NameOfList.Clear(); をクリアするように単純に言っています。なぜそれがクリアされないのか、私は立ち往生しています。スコアをさらに入力すると、再起動する代わりに合計が追加されるため、そうではないことがわかります。

これが私の完全なプログラムコードです。私のクリアは途中から始まります。

前もって感謝します。

{
public partial class frmScoreCalculator : Form
{
    //declare a list array for scores
    List<int> Scores = new List<int>();

    //set total and average to 0 
    int Total = 0;
    decimal Average = 0;


    public frmScoreCalculator()
    {
        InitializeComponent();
    }

    //calculate the average by dividing the sum by the number of entries
    private decimal CalculateAverage(int sum, int n)
    {
        Average = sum / n;

        return Average;
    }
    private void frmScoreCalculator_Load(object sender, EventArgs e)
    {

    }

    //closes the program. Escape key will also close the program
    private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close();
    }


    //clears the text boxes, clears the array, returns focus back to the score text box like a boss.
    private void btnClear_Click(object sender, EventArgs e)
    {
        txtScore.Text = "";
        txtCount.Text = "";
        txtTotal.Text = "";
        txtAverage.Text = "";
        Scores.Clear();
        txtScore.Focus();
    }

    //makes sure the score is within the valid range, calculates the average, adds to the number of
    //scores entered, and adds to the total
    private void btnAdd_Click(object sender, EventArgs e)
    {
        if (txtScore.Text == string.Empty)
        {
            txtScore.Focus();
            return;
        }


        int Score = int.Parse(txtScore.Text);

        if (Score > 0 && Score < 100)
        {
            Scores.Add(Score);

            Total += Score;
            txtTotal.Text = Total.ToString();

            txtCount.Text = Scores.Count.ToString();

            Average = CalculateAverage(Total, Scores.Count);
            txtAverage.Text = Average.ToString();

            txtScore.Text = string.Empty;
            txtScore.Focus();

        }

        // if number is not valid, ask user for valid number
        else
        {
            MessageBox.Show("Please enter a number between 0 and 100.", "ENTRY ERROR, DO IT RIGHT!");

        }

        // returns focus to txtNumber
        txtScore.Focus();
        txtScore.Text = "";
    }

    //display button
    private void btnDisplay_Click(object sender, EventArgs e)
    {
        //sorts the scores low to high
        Scores.Sort();

        //displays scores in message box
        string DisplayString = "Sorted Scores :\n\n";

        foreach (int i in Scores)
        {
            DisplayString += i.ToString() + "\n";
        }

        MessageBox.Show(DisplayString);
    }
}

}

4

1 に答える 1

1

Total配列をクリアすると同時に変数をゼロにする必要があります。

于 2013-10-13T16:11:45.183 に答える