【问题标题】:add a specific value in an arraylist to the another arraylist将 arraylist 中的特定值添加到另一个 arraylist
【发布时间】:2018-10-26 04:52:51
【问题描述】:

那里!我正在做我的学业,我是一名 Java 初学者。我正在编写一个程序,它有一个名为 petshop 的 ArrayList。宠物店由对象居民组成。

对象居民有姓名、生日、邮政编码和宠物(居民拥有的宠物)等字段。以下是对象 Residents 的示例: 姓名简 1991 年 11 月 11 日生日 邮政编码 2222 宠物狗猫猪

我正在写一个方法来找出唱片封面有多少种不同的宠物。我在想的是将petshop中的宠物记录添加到一个新的字符串数组宠物中,并清除重复的值。 这是我的代码:

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("");不会工作。

【问题讨论】:

  • petshop 是否在此方法之外定义?通常NullPointerException 在某些内容未定义并且您尝试访问它时会被抛出。在这种情况下,可能是因为您尝试引用变量 petshop,但它没有作为参数传递或在此方法范围内的任何位置创建。
  • 嗨,泰勒,我已经检查过了,宠物店是在这个类中定义的。

标签: arrays arraylist nullpointerexception hashset


【解决方案1】:

没有看到你的其他方法,很难看出哪里出了问题,但我的猜测是当你将它放入数组时,因为那是引发异常的行。

您将数组初始化为String[]pets;,但您没有使用new 关键字来实际创建数组或指定其大小;你所拥有的只是名字pet。当您使用非原始类型的变量执行此操作时(如果您不知道它是什么,请查看此内容),您实际上是在创建一个引用。但是,您的参考资料(目前名为 pet)没有放入任何内容,因为您没有将其设置为任何内容。要解决此问题,请说 String[] pet = new String[insert_size];,以便 pet 实际上引用一个可以容纳 String 变量的数组。

【讨论】:

  • 感谢您的回答。这个方法我试过了,还是不行。
猜你喜欢
  • 1970-01-01
  • 2017-01-11
  • 2013-05-19
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多