学生を収集するための配列と、各学生の成績配列を作成しようとしています。私のintカウントはwhileループか何かで増加します。問題は、Students 配列にエラーが発生することです。代替方法はありますか?
static int count = 0;
static int[] Grades = new int[count];
static String[] Students = new String[Grades[count];
名前、年齢など、および成績の配列/リストを含む Student クラスを作成できます。
class Student {
String name;
String age;
//...
List<Integer> grades;
//Getters & Setters of course
}
{name:grades} のマップを取得するメソッドを追加できます
このデザインは、将来的に多くの問題を引き起こします。本当に配列に固執したい場合は、2次元配列を検討してください。
次のようにマップを使用すると、より適切でクリーンな設計になります。
map<Student, List<Grades>> studentGrades= new Hashmap <Student, List<Grades>>() ;
2次元配列を持つことができます。配列の配列のようなもので、各アイテムは配列全体を保持します。
int[][] students = new int[num_of_students][]
次に、各生徒の各配列の長さを動的に変更できます。
for (int i = 0; i < num_of_stuent; i++)
students[i] = new int[i + 1]
どうですか:
Map<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>();
たす:
String student = "Bobby";
int mark = 85;
if (map.containsKey(student))
map.get(student).add(mark);
else
{
ArrayList<Integer> arr = new ArrayList<Integer>();
arr.add(mark);
map.put(student, arr);
}
表示する:
System.out.println(map);
また:
for (Entry<String, ArrayList<Integer>> entry: map.entrySet())
System.out.println("Marks of " + entry.getKey() + " = " + entry.getValue());
機能を拡張して、学生がより多くのプロパティを持つことができるようにするには:
class Student
{
ArrayList<Integer> marks;
// ...
}
宣言:
Map<String, Student> students = new HashMap<String, Student>();