我正在尝试创建一个数组来收集学生,并为每个学生创建一个成绩数组。我的int计数将以while循环或其他方式递增。问题是我的Students数组出错了。有替代方法吗?
static int count = 0;
static int[] Grades = new int[count];
static String[] Students = new String[Grades[count];
答案 0 :(得分:1)
您可以创建一个Student类,其中包含姓名,年龄等等以及数组/成绩列表:
class Student {
String name;
String age;
//...
List<Integer> grades;
//Getters & Setters of course
}
您可以添加一个抓取{name:grades}
地图的方法答案 1 :(得分:1)
这个设计将来会给你带来很多问题。如果你真的想坚持使用数组。请考虑二维数组。
更好更干净的设计将使用地图如下。
map<Student, List<Grades>> studentGrades= new Hashmap <Student, List<Grades>>() ;
答案 2 :(得分:0)
你可以拥有一个二维数组。类似于数组的数组,每个项目都包含整个数组:
int[][] students = new int[num_of_students][]
然后你可以为每个学生改变每个阵列的长度:
for (int i = 0; i < num_of_stuent; i++)
students[i] = new int[i + 1]
答案 3 :(得分:0)
怎么样:
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>();