我正在尝试编写一个将作为输入的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();
}
}
}
}
答案 0 :(得分:1)
基本上你的问题在于这一行
students = new int[num][];
和
students[i][j] = in.nextInt();
这个。
因为在java数组中,您需要在使用它之前初始化该数组。但是在你的第一行你没有放置正确的数组大小,这意味着2D阵列将无法正确定义。所以一旦你尝试使用我在这里提到的第二个语句来调用它,它显然是空的。
因此,您的想法应该是将动态值作为numberofcourses。但是在java中,您应该在使用之前定义数组的大小。所以在你的情况下你的想法应该是将另一个数组放入你的基础数组(学生)作为课程,这将是一个int数组,然后你可以使用它插入课程。
最好配合
Object[][] data = new Object[numberOfStudents][1];
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();
完成 我想你明白了。抱歉虚拟代码。我认为它几乎就在那里。