首页 > 解决方案 > 在 Arraylist 类中使用 .size() 时出现 NullPointerException

问题描述

目前,我正在做一个处理 ArrayList 类的作业。在某些时候,我需要检查讲师的 id 并确保讲师没有两次添加到 ArrayList 中,所以我做了一个 for 循环来遍历所有已注册的 id 并获取 id 并检查如果它已经存在

问题是当我在循环中使用方法“.size()”时,JVM 抛出 NullPointerException,我不知道为什么。

==================================================== =========================

我需要阅读的是:

\\name - id - dateOfBirth - 性别 - 学位 - 专业 - 城市 - 可用性

Amanda Smith, 102020, 320101200000, M, PhD, 软件工程, 纽约, true

==================================================== ======================

这是代码:

public static void main(String[] args) {

    /* NOTE: I HAVE A CLASS CALLED "UniversityMember" THAT IS A SUPERCLASS FOR "Instructor" CLASS */

    //declare what I need   
    ArrayList<UniversityMember> membersList;
    Scanner read = new Scanner("inputFile.txt");//the file contains the text above

    //First: Split the line everytime the sign ", " shows
    String[] line = read.nextLine().split(", ");

    //Second: Assign each valuse to its correspondeding variable
    String name = line[0];
    String id = line[1];
    long date = Long.parseLong(line[2]);
    Date birthDate = new Date(date);
    char gender = line[3].charAt(0);
    String degree = line[4];
    String specialization = line[5];
    String address = line[6];
    boolean availability = Boolean.parseBoolean(line[7]);

    //check if the Id is registered already
    for (int i = 0; i < membersList.size(); i++) { //ERROR OCCURE
        if (membersList.get(i) == null) {
            break;
        }

        if (membersList.get(i).id.equals(id)) {
            System.out.println("The instructor is registered already, the ID is found in the system.");
            System.exit(0);
        }
    }

    //add and make a new object for the constructor
    membersList.add(new Instructor(name, id, birthDate, gender, degree, specialization, address, availability));
    System.out.println("The instructor is successfully added.");

}//end main

标签: javanullpointerexceptionsize

解决方案


问题是 membersList 在您调用 .size() 时不存在

代替

ArrayList<UniversityMember> membersList;

你需要初始化它

ArrayList<UniversityMember> membersList = new ArrayList<UniversityMember>();

推荐阅读