私はプログラミングの初心者です。配列をループして要素のすべての出現を見つける方法C#
私はお互いに対応する2つの配列を持っています。 最初には生徒の名前が表示され、もう一方の生徒には生徒の等級が表示されます。
私の目標は、配列をループして、たとえばグレード 87の生徒をすべて印刷することです。
現在、私はそのグレードの最初の人物を印刷することができますが、最初のグレードが見つかるとループは終了します。
私はそのグレードの人をすべて見つける方法を考え出すのに問題があります。どんな助けもありがとう。おかげ
public static void OptionTwo()
{
LoadArray();
Console.WriteLine("Enter a student grade to see all students with that grade");
int userInput = Convert.ToInt32(Console.ReadLine());
int subscript;
subscript = Search(studentGrade, userInput, ref counter);
ShowResults(userInput, subscript, counter);
}
public static int Search(int[] studentGrade, int userInput, ref int counter)
{
counter = 0;
for (int s = 0; s < studentGrade.Length; s++)
{
counter++;
if (studentGrade[s] == userInput)
return s;
}
return -1;
}
public static void ShowResults(int userInput, int subscript, int counter)
{
//LOOP THROUGH ARRAY
Console.WriteLine();
Console.WriteLine("The following students have that grade: ");
Console.WriteLine();
if (subscript == -1)
Console.WriteLine("{0} is NOT in array, # of comparisons is {1}",
userInput, counter);
else
Console.WriteLine("{0} {1}", studentName[subscript].PadRight(20), studentGrade[subscript].ToString().PadRight(5));
}
あなたが最初の一致を検出した後、すぐに返すので、それは停止します。他の配列(または 'List')で見つかったすべてのインデックスを保存して保存し、その配列またはリストを返す必要があります。 –
Steve
あなたは1つの結果が見つかるとすぐに戻ります。むしろコードを変更して結果をリストに追加し、その結果に基づいて配列を生成します。次に出力メソッドに渡します。また、このために別の配列を持つことは賢明ではなく、基本的なオブジェクト指向のメソッドをよく学び、データを含むクラスを作成してください。この方法では、不一致の配列をこれまでに取得することはありません。 –
"関連する"データの並列配列は、通常、良い考えではありません。データを "関連付ける"より良い方法は、それらを 'class Student {}'に入れることです。次に 'class'の配列を取得するだけです。 – crashmstr