有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何让数组被数组索引:Java?

我试图创建一个数组来收集学生,并为每个学生创建一个分数数组。我的整数计数会随着一个while循环或什么的增加而增加。问题是我的学生数组出错了。还有别的方法吗

static int count = 0;

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

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

共 (3) 个答案

  1. # 1 楼答案

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

    更好、更简洁的设计是使用以下地图

    map<Student, List<Grades>>  studentGrades= new Hashmap <Student, List<Grades>>() ;
    
  2. # 2 楼答案

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

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

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

    for (int i = 0; i < num_of_stuent; i++)
         students[i] = new int[i + 1]
    
  3. # 3 楼答案

    那么:

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