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();
完成
我想你明白了。对不起,虚拟代码。我觉得差不多了。
我正在尝试编写一个 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();
完成 我想你明白了。对不起,虚拟代码。我觉得差不多了。