我怎样才能有一个数组索引的数组:Java?

时间:2013-02-17 17:16:57

标签: java arrays string int

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

static int count = 0;

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

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

4 个答案:

答案 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>();