null指针异常

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

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

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

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

  1. static ArrayList <Subjects> subjectList=new ArrayList();
  2. static ArrayList <Subjects> subjectListTwoElement=new ArrayList();
  3. static ArrayList <String> stringHolder=new ArrayList();
  4. //keeps track of possible sets
  5. static Set <String> ssv=new HashSet();
  6. //possible values in next iteration
  7. static Set <Subjects> subjectHolder=new HashSet();
  8. static class Subjects {
  9. public String identifier="";
  10. public String partner="";
  11. public String partner2="";
  12. int count;
  13. public Subjects(String identifier, int count) {
  14. this.identifier = identifier;
  15. this.count=count;
  16. }
  17. public Subjects(String identifier, String partner, int count) {
  18. this.identifier = identifier;
  19. this.partner=partner;
  20. this.count=count;
  21. }
  22. public Subjects(String identifier, String partner, String partner2, int count) {
  23. this.identifier = identifier;
  24. this.partner=partner;
  25. this.partner2=partner2;
  26. this.count=count;
  27. }
  28. @Override
  29. public boolean equals(Object obj) {
  30. if (this == obj)
  31. return true;
  32. if (obj == null)
  33. return false;
  34. if (getClass() != obj.getClass())
  35. return false;
  36. Subjects other = (Subjects) obj;
  37. if (identifier.equals(other.identifier)&&partner.equals(other.partner)) {
  38. return true;
  39. }
  40. return false;
  41. }
  42. }

这是我的输出:

  1. Single Attributes:
  2. Curb: 598
  3. Paved: 6834
  4. Asphalt: 11087
  5. Curb & Gutter: 3483
  6. Unknown: 4731
  7. Double Attributes:
  8. CurbAsphalt0
  9. Exception in thread "main" java.lang.NullPointerException
  10. at Code.printDouble(Code.java:178)
  11. 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,因为您正试图调用该对象上的方法。
请告诉我这是否有用。
-卡吉:)

相关问题