配列の長さに基づいて計算を行う必要があるメソッドがあります。計算に .length メソッドを使用していますが、このメソッドは配列の最大長 (10 と宣言しました) を使用して演算を行っています。これは、ユーザーからデータを取得するために使用しているループです。配列データを並べ替えるのが理想的な方法ではないことはわかっていますが、これは宿題のためであり、.Split メソッドを正しく使用することを中心に展開しています (これは私が抱えている問題ではありません)。
for (int i = 0; i < MAX; i++)
{
Console.Write("Enter a name and a score for player #{0}: ", (i + 1));
string input = Console.ReadLine();
if (input == "")
{
// If nothing is entered, it will break the loop.
break;
}
// Splits the user data into 2 arrays (integer and string).
string[] separateInput = input.Split();
name [i] = separateInput[0];
score [i] = int.Parse(separateInput[1]);
}
平均スコアを計算するために使用している方法は次のとおりです。
static void CalculateScores(int[] score)
{
int sum = 0;
int average = 0;
for (int i = 0; i < score.Length; i++)
{
sum += score[i];
average = sum / score.Length;
}
Console.WriteLine("The average score was {0}", average);
私は次のようにメソッドを呼び出しています:
CalculateScores(score);
編集:私の配列は宣言されています:
int[] score = new int[MAX]; //MAX == 10.
string[] name = new string[MAX];
CalculateScores メソッドは、スコアの異なる組み合わせをコンソールにいくつ入力しても、score.Length が常に 10 であるかのように計算を行っています。入力を収集するためのループが正しく行われていないためなのか、CalculateScores メソッドに欠陥があるためなのかはわかりません。前もって感謝します。
編集:明確にするために、CalculateScoresから正しい値を取得できない理由に混乱しています。