我想弄清楚为什么我在for loop
之外声明的数组拒绝被for loop
正确初始化,以便被另一个for loop
使用。谷歌搜索"数组空指针异常"和" null数组"一直让我误以为没有初始化数组。希望这不是在这里发生的事情。 (我不认为是。)
public static void main(String[] args)
{
Student[] students = new Student[25];
for(Student student : students)
{
int grade=(int)(Math.random()*4 +1);
student = new Student("bob",grade);
System.out.println(student); //debug 1
}
for(Student student : students)
{
// if (student.getGPA() == 0){
// System.out.println("No data entered for student.");
// }
System.out.println(student); //debug 2
}
}
这个块只是主要的,它在另一个以文件命名的有效类中。 Student是我排除的一个类,因为它与被询问的问题无关,但是作为参考,它需要一个String名称和一个int gradeLevel作为参数,并且有toString()和getGPA()方法(等等)。
我想从调试2获得并从调试1获得:
的内容bob: Freshman; GPA: 0.00
bob: Senior; GPA: 0.00
bob: Freshman; GPA: 0.00
bob: Sophomore; GPA: 0.00
bob: Senior; GPA: 0.00
调试2中的内容:
null
null
null
null
null
我希望print语句标记为" debug 2"打印与#34; debug 1"相同的东西。是,这是学生的toString值的列。相反,我只是为调试2获取了一列null,但是调试1的输出正确。
注释掉的代码是空指针异常的来源,因为null对象没有getGPA()方法。我不知道为什么数组仍然充满了空值。调试1中没有空的这一事实告诉我数组确实正在被初始化,但是这些值并没有停留在数组中。
我可能完全误解了某些东西或在这里使用了某些东西。