这是我第一次使用其中一种,所以如果有这样的问题,我很抱歉。但这是我前两步的作业说明。 1.声明一个包含int类型值的二维数组,其第一个维度设置为3.此数组用于保存三个类中每个学生的学分小时数。但是,这三个班级的学生人数可能会有所不同。 2.使用Scanner类要求输入一个整数,表示第一堂课的学生人数。对其他两个类重复此过程。
这是我的代码行18 - 26我不断超出范围异常和零点异常
int[][] ragArray = new int[3][];
for(int i = 0; i < ragArray.length; i++){
for(int j = 0; j < ragArray[i].length; j++){
System.out.println("Enter the number of students in the class: ");
ragArray[i][j] = input.nextInt();
}
}
抱歉,这太久了:/
答案 0 :(得分:0)
您的循环很好,但您还需要设置数组的其他维度。目前你有一个有3个空值的数组,所以ragArray [0] [0]将为null。
由于你不知道数组的其他维度,你将首先询问学生的数量(不是内部循环),然后在创建二维数组时使用给定的值。
System.out.println("Enter the number of students in the class: ");
int students = input.nextInt();
int[][] ragArray = new int[3][students];
//now you have the array to store students
答案 1 :(得分:0)
它的2D =数组数组。
如果数组中没有存储任何内容,并且您没有创建它,则它为null。
因此,您的所有ragArray[0-2]
都等于null。
当你尝试访问null的长度时,会抛出异常,在这里:ragArray[i].length
答案 2 :(得分:0)
您的锯齿状数组没有为其声明另一个数组,因此ragArray[i]
将失败。
锯齿状数组的意思是你放在那里的数组是动态的;这意味着它们之间的长度并不均匀。如果您根据班级中的学生数量获取该信息,那么
所以我们要做的是在循环内创建一个新数组,对该循环执行读取等操作,然后将我们创建的数组附加到我们的锯齿状数组在处理的最后。
for(int i = 0; i < ragArray.length; i++) {
System.out.print("Enter the number of students in the class: ");
int[] students = new int[input.nextInt()];
input.nextLine();
// loop over students instead
ragArray[i] = students;
}