NullPointerException при использовании .size () в классе Arraylist - PullRequest
0 голосов
/ 04 апреля 2020

В настоящее время я делаю назначение, связанное с классом ArrayList. в какой-то момент мне нужно проверить идентификатор инструктора и убедиться, что инструктор не добавляется дважды в ArrayList, поэтому я сделал для l oop до go через все идентификаторы, которые были зарегистрированы, и получить идентификатор и проверить, существует ли он уже

проблема в том, что когда я использую метод ".size ()" в l oop, JVM генерирует исключение NullPointerException, и я не знаю, почему.

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

мне нужно прочитать следующее:

\\ имя - id - датаOfBirth - пол - степень - специальность - город - доступность

Аманда Смит, 102020, 320101200000, доктор философии, инженер-программист, Нью-Йорк, правда

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

это код:

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

Ответы [ 4 ]

1 голос
/ 04 апреля 2020

Вам нужно инициализировать ArrayList. Вот так ArrayList membersList = new ArrayList (); После этого в первом size () возвращает 0, а не ноль. Помните, что вся структура данных должна быть инициализирована в java.

1 голос
/ 04 апреля 2020

Проблема в том, что membersList не существует, когда вы вызываете .size () для него

вместо

ArrayList<UniversityMember> membersList;

, вам нужно инициализировать его

ArrayList<UniversityMember> membersList = new ArrayList<UniversityMember>();
0 голосов
/ 04 апреля 2020

nvm Я понял, что не инициализировал свой массив (╥ω╥). Я оставлю вопрос, чтобы другие были осторожны

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

Код после исправления:

    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

    /* ===== FIXING THE ERROR ======*/
     membersList = new ArrayList();

    //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++) { 
        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
0 голосов
/ 04 апреля 2020

Вы ничего не добавили в список membersList, а затем запросили размер для чего-то, в чем ничего нет. Пример того, что происходит

String str;

for(int i = 0; i < str.length(); i++){
    System.out.println("hey");
}

, также вам нужно объявить список массивов следующим образом

ArrayList<Method name> membersList = new ArrayList<Method name>();

, также не забудьте импортировать класс ArrayList

import java.util.ArrayList;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...