Java简单的不规则数组查询

时间:2015-03-06 15:32:13

标签: java arrays ragged

我正在尝试编写一个将作为输入的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();
            }
        }
    }

}

1 个答案:

答案 0 :(得分:1)

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

students = new int[num][];

students[i][j] = in.nextInt();
这个。 因为在java数组中,您需要在使用它之前初始化该数组。但是在你的第一行你没有放置正确的数组大小,这意味着2D阵列将无法正确定义。所以一旦你尝试使用我在这里提到的第二个语句来调用它,它显然是空的。

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

最好配合

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

for loop

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

然后

data[i][0] = no_of_sub ;

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

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

完成 我想你明白了。抱歉虚拟代码。我认为它几乎就在那里。