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