Java 从单独的初始化列表创建对象数组时遇到空指针异常消息
我创建了三个必须在“students”数组中使用的初始值设定项数组,它应该是student对象的数组。每次运行时,都会出现一个空指针错误Java 从单独的初始化列表创建对象数组时遇到空指针异常消息,java,arrays,object,methods,nullpointerexception,Java,Arrays,Object,Methods,Nullpointerexception,我创建了三个必须在“students”数组中使用的初始值设定项数组,它应该是student对象的数组。每次运行时,都会出现一个空指针错误 class School { private Student[] students; private int size; public School (int s) {size = s;} public void addData() { String[] name = {"Tom", "Ann", "Bob"
class School
{
private Student[] students;
private int size;
public School (int s)
{size = s;}
public void addData()
{
String[] name = {"Tom", "Ann", "Bob", "Jan", "Joe", "Sue", "Jay", "Meg", "Art", "Deb"};
int[] age = {21, 34, 18, 45, 27, 19, 30, 38, 40, 35};
double[] gpa = {1.685, 3.875, 2.5, 4.0, 2.975, 3.225, 3.65, 2.0, 3.999, 2.125};
for(int i = 0; i < size; i++){
students[i] = new Student(name[i], age[i], gpa[i]);
}
}
public String toString()
{
String s = "";
for(int i = 0; i < size; i++){
s = s + students[i].toString();
}
return s;
}
}
class Student
{
private String name;
private int age;
private double gpa;
public Student (String n, int a, double g)
{
name = n;
age = a;
gpa = g;
}
public String getName() { return name; }
public int getAge() { return age; }
public double getGPA() { return gpa; }
public String toString()
{
String temp = name + " " + age + " " + gpa + "\n";
return temp;
}
}
班级学校
{
私立学生[]名学生;
私有整数大小;
公立学校(INTS)
{size=s;}
public void addData()
{
String[]name={“汤姆”、“安”、“鲍勃”、“简”、“乔”、“苏”、“杰”、“梅格”、“阿特”、“黛布”};
int[]年龄={21,34,18,45,27,19,30,38,40,35};
双[]平均成绩={1.685,3.875,2.5,4.0,2.975,3.225,3.65,2.0,3.999,2.125};
对于(int i=0;i
问题究竟从哪里开始,如何解决 学生数组未初始化。在java中,您需要声明数组,并使用大小对其进行初始化。 例如:
private Student[] students = new Student[5];
这里您还并没有初始化数组的大小,所以在运行时,students数组指的是null 通过这一行,您试图在尚未初始化的内存中分配
students[i] = new Student(name[i], age[i], gpa[i]);
所以首先要做下面的改变
private Student[] students = new Student[7];
初始化如下:
private Student[] students = new Student[100]
理想情况下,student数组必须大于size,但size是在student数组之后定义的,因此我们不能这样做,必须使用足够大的随机数组长度。array
students
从未初始化<代码>学生=新生[10]在构造函数中,但如果传入的大小不是10,则也会出现问题。您可以在构造函数中初始化数组,这样您就知道大小了。Java中的数组不在编译时分配内存,而是在运行时分配内存。