public static ArrayList<Integer> getStudentClasses(Student student, ArrayList<Integer>[] classesXstudents) {
ArrayList<Integer> classes = new ArrayList<Integer>();
for (int i = 0; i < classesXstudents.length; i++) {
for (int j = 0; j < classesXstudents[i].size(); j++) {
if (classesXstudents[i].get(j) == student.getID()) {
classes.add(i+1);
}
}
}
return classes;
}
在行
处抛出NullPointerException
for (int j = 0; j < classesXstudents[i].size(); j++) {
我假设classesXstudents[i].size()
在某些时候是null
。 classesXstudents
是ArrayList
个对象的数组。我应该如何调试这个案例?
答案 0 :(得分:1)
这样的事情怎么样。
if (classesXstudents[i] != null){
for (int j = 0; j < classesXstudents[i].size(); j++) {
//....
}
} else {
//
}
您的某些元素可能为null,您应该检查它们的初始化位置。可能只是你忘了初始化其中一个。
答案 1 :(得分:0)
这意味着classesXstudents[i]
数组的某些元素为空。
看看该数组是如何填充的。搜索可能插入null的情况,或者某些元素可能未被分配(默认值为null)的情况,可能在数组的末尾。
答案 2 :(得分:0)
这是因为 ArrayList<Integer> classesXstudents[i]
的某些元素是null
。
您可以通过检查您要求的size
实际上不是null
的元素来解决此问题。
if (classesXstudents[i] != null) {
// Your for-loops and rest of the code here
}
添加上面的代码片段会检查元素是否为null
(假设您忘记初始化)。您可以将其合并到代码中,如下所示:
public static ArrayList<Integer> getStudentClasses(Student student, ArrayList<Integer>[] classesXstudents)
{
ArrayList<Integer> classes = new ArrayList<Integer>();
for (int i = 0; i < classesXstudents.length; i++) {
if (classesXstudents[i] != null) // This statement is what you need to add
for (int j = 0; j < classesXstudents[i].size(); j++) {
if (classesXstudents[i].get(j) == student.getID()) {
classes.add(i+1);
}
}
}
return classes;
}