Java 简单的参差不齐的数组查询

Java simple ragged Array query

我正在尝试编写一个 Java 程序,它将作为输入:

然后它会计算每个学生的平均值。

但我在尝试读入这些值时遇到了问题。请告诉我如何解决此问题。

我的代码是:

package q3;

import java.util.Scanner;
public class Q3 {

    public static void main(String[] args) {

        int [][] students;
        System.out.println("How many students? : ");
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        students = new int[num][];
        int [] numofcourses = new int[num];

        for(int i = 0;i<num;i++)
        {
            System.out.print("How many courses for student " + (i+1) + " : ");
            numofcourses[i] = in.nextInt();
            for(int j = 0;j<numofcourses[i];j++)
            {
                System.out.print("Enter grade " + (j+1) + " for student " + (i+1) + " : ");         
                students[i][j] = in.nextInt();
            }
        }
    }

}

基本上你的问题出在这一行

students = new int[num][];

students[i][j] = in.nextInt();

这个。 因为在 java 数组中你需要在使用前初始化数组。但是在你的第一行你没有输入正确的数组大小,这意味着二维数组将不会被正确定义。所以一旦你尝试使用我在这里提到的第二条语句来调用它,它显然是空的。

所以您的想法应该是将动态值作为课程数。但是在 java 中,你应该在使用它之前定义数组的大小。所以在你的情况下,你的想法应该是将另一个数组作为课程放入你的基本数组(学生)中,这将是一个 int 数组,然后你可以使用它来插入课程。

所以最好选择

Object[][] data = new Object[numberOfStudents][1];

for循环

numOFSubjects = nextInt();
int[] no_of_sub = new int[numOFSubjects];

然后

data[i][0] = no_of_sub ;

然后申请成绩 for 循环 i 和 j

data[i][0][j] = nextInt();

完成 我想你明白了。对不起,虚拟代码。我觉得差不多了。