有!我正在做学校作业,并且是Java初学者。我正在编写一个程序,该程序具有一个名为petshop的ArrayList。宠物店由对象居民组成。
对象居民具有诸如姓名,生日,邮政编码和宠物(居民所拥有的宠物)之类的字段。以下是对象“居民”的示例: 名字扬 生日11/11/1991 邮政编码2222 宠物狗猫猪
我正在写一种方法来找出唱片覆盖了多少种宠物。我在想的是将petshop中的pet记录添加到新的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(“”);
我不明白哪里出了问题。还是有另一种方法?
答案 0 :(得分:0)
没有看到其他方法,很难看到问题所在,但是我猜是在将其放入数组时,因为这是引发异常的行。
您正在以String[]pets;
的形式初始化数组,但是没有使用new
关键字来实际制作数组或指定其大小;您所拥有的只是名称pet
。当使用非原始类型的变量(如果不知道它是什么)进行查找时,实际上就是在创建引用。但是,您的引用(当前命名为pet
)没有投入任何内容,因为您没有将其设置为任何内容。要解决此问题,请说String[] pet = new String[insert_size];
,以便pet
实际上引用一个可以容纳String
变量的数组。