добавить определенное значение в arraylist к другому arraylist - PullRequest
0 голосов
/ 26 октября 2018

есть!Я работаю над своей школьной работой, и я новичок в Java.Я пишу программу, которая имеет ArrayList под названием petshop.зоомагазин состоит из жителей объекта.

у жителей объекта есть поля, такие как имя, день рождения, почтовый индекс и домашнее животное (домашнее животное, которое есть у жителя).Ниже приведен пример объекта «Жители»: имя Ян день рождения 11/11/1991 почтовый индекс 2222 Свинья кошка Свинья кошка

Я пишу метод, чтобы узнать, сколько разных видов домашних животных покрывает запись.Я думаю о том, чтобы добавить запись о питомце из petshop в нового String Array Pet и очистить дубликат.вот мой код:

public void addpets() {
        Set<String>cleanpets = new HashSet<>();


        for(int i=0; i<petshop.size();i++)
        {           
            String[]pet = petshop.get(i).getPetown().split("");

            for(int j=0; j<pet.length; j++)
            {
                pets.add(pet[j]);
            }
        }   

            cleanpets.addAll(pets);
            pets.clear();
            pets.addAll(cleanpets);
        }

Pets - это новый String ArrayList, который я инициализирую в том же классе.Когда я запускаю всю программу, консоль всегда показывает исключение в потоке "main" java.lang.NullPointerException со строкой: pet = petshop.get (i) .getPetown (). Split ("");

Я не понимаю, где не так.Или есть другой способ сделать это?

Я знаю, в чем проблема сейчас.Потому что, если у жителей есть только один питомец, String [] pet = petshop.get (i) .getPetown (). Split ("");не будет работать.

1 Ответ

0 голосов
/ 26 октября 2018

Не видя других ваших методов, трудно понять, что не так, но я предполагаю, что когда вы помещаете его в массив, так как именно эта строка выдает исключение.

Вы инициализируете массив как String[]pets;, но вы не используете ключевое слово new, чтобы фактически создать массив или указать его размер;все, что у тебя есть, это имя pet.Когда вы делаете это с переменной, которая не является примитивным типом (посмотрите это, если вы не знаете, что это такое), вы по сути создаете ссылку.Но ваша ссылка (названная pet в настоящее время) ни к чему не относится, потому что вы ничего не установили.Чтобы это исправить, скажем String[] pet = new String[insert_size];, чтобы pet фактически ссылался на массив, который может содержать String переменных.

...