我正在设计一个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)
1条答案
按热度按时间um6iljoc1#
你应该改变测试
!s.identifier.equals(null)
进入s.identifier != null
对你的测试也是这样s.partner
.s.identifier.equals(null)
将给出nullpointerexception,如果s.identifier
为null,因为您正试图调用该对象上的方法。请告诉我这是否有用。
-卡吉:)