使用ArrayList时尝试调试NullPointerException

时间:2016-03-04 16:47:58

标签: java arraylist nullpointerexception

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()在某些时候是nullclassesXstudentsArrayList个对象的数组。我应该如何调试这个案例?

3 个答案:

答案 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;
}