0

我正在尝试创建一个数组来收集学生,并为每个学生创建一个成绩数组。我的 int 计数将随着 while 循环或其他东西而增加。问题是我的学生数组出错。有替代方法吗?

static int count = 0;

static int[] Grades = new int[count];

static String[] Students =  new String[Grades[count];
4

4 回答 4

1

您可以创建一个包含姓名、年龄...等和成绩的数组/列表的学生类:

class Student {
  String name;
  String age;
  //...
  List<Integer> grades;

  //Getters & Setters of course
}

您可以添加一个获取 {name:grades} 地图的方法

于 2013-02-17T17:23:49.683 回答
1

这种设计将来会给您带来很多问题。如果你真的想坚持使用数组,请考虑二维数组。

一个更好和更干净的设计将是使用如下地图。

map<Student, List<Grades>>  studentGrades= new Hashmap <Student, List<Grades>>() ;
于 2013-02-17T17:24:10.033 回答
0

你可以有一个二维数组。类似于数组的数组,每个项目都包含一个完整的数组:

int[][] students = new int[num_of_students][]

然后,您可以动态更改每个学生的每个数组的长度:

for (int i = 0; i < num_of_stuent; i++)
     students[i] = new int[i + 1]
于 2013-02-17T17:29:10.480 回答
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>();
于 2013-02-17T17:42:30.130 回答