null指针异常

3z6pesqy  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(425)

我正在设计一个apriori程序,它需要计算特定house属性在文本文件中出现的次数。程序需要计算属性自身出现的次数,属性成对出现的次数,以及3+的组出现的次数。我创建了一个subjects类,它基本上连接了属性。我的目标是读取文件,使用subjects类将属性划分为特定的类别,并创建这些属性的arraylist。然后我创建了一个属性的hashset(以及属性的组合),使用嵌套循环,我将增加hashset中属性的计数器,以确定它们出现的次数。
问题是我的哈希集中出现了一个空指针异常。我检查以确保添加到集合中的对象不为null,其值不为null,但异常仍然存在。有什么建议吗?我将在下面发布一些代码片段,但如果您需要更多,请告诉我。

//This is the loop giving me an error on the first iteration through:        
for (Subjects s: subjectListTwoElement){
    if(!s.equals(null)&&!s.identifier.equals(null)&&!s.partner.equals(null)){
        System.out.println(s.identifier+s.partner+s.count);
        subjectHolder.add(s);
    }
}

这些是我的变量和主题类:

static ArrayList <Subjects> subjectList=new ArrayList();
static ArrayList <Subjects> subjectListTwoElement=new ArrayList();
static ArrayList <String> stringHolder=new ArrayList();

//keeps track of possible sets
static Set <String> ssv=new HashSet();

//possible values in next iteration
static Set <Subjects> subjectHolder=new HashSet();

static class Subjects {

    public String identifier="";
    public String partner="";
    public String partner2="";
    int count;

    public Subjects(String identifier, int count) {
        this.identifier = identifier;
        this.count=count;
    }

    public Subjects(String identifier, String partner, int count) {
        this.identifier = identifier;
        this.partner=partner;
        this.count=count;
    }

    public Subjects(String identifier, String partner, String partner2, int count) {
        this.identifier = identifier;
        this.partner=partner;
        this.partner2=partner2;
        this.count=count;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
          return true;
        if (obj == null)
          return false;
        if (getClass() != obj.getClass())
          return false;
        Subjects other = (Subjects) obj;
        if (identifier.equals(other.identifier)&&partner.equals(other.partner)) {
            return true;
        }
        return false;
    }

}

这是我的输出:

Single Attributes:
Curb: 598
Paved: 6834
Asphalt: 11087
Curb & Gutter: 3483
Unknown: 4731

Double Attributes:
CurbAsphalt0
Exception in thread "main" java.lang.NullPointerException
    at Code.printDouble(Code.java:178)
    at Code.main(Code.java:77)
um6iljoc

um6iljoc1#

你应该改变测试 !s.identifier.equals(null) 进入 s.identifier != null 对你的测试也是这样 s.partner . s.identifier.equals(null) 将给出nullpointerexception,如果 s.identifier 为null,因为您正试图调用该对象上的方法。
请告诉我这是否有用。
-卡吉:)

相关问题