我正在构建一个类似于整数,字符串或字符的FrequencyBag,它将获取数据并将其与频率配对。
例如:
FrequencyBag<Integer> fb = new FrequencyBag<Integer>();
fb.add(cat);
fb.add(dog);
fb.add(horse);
fb.add(cat);
fb.add(cat);
看起来像
(cat,3) ---> (dog,1) ---> (horse, 1)
我的方法getMaxFreq()在包含元素时获取最大频率(上面的示例为3)没有问题,但是当我尝试返回值0为空null FrequencyBag()时出现此错误
&#34;线程中的异常&#34; main&#34;显示java.lang.NullPointerException&#34; &#34; FrequencyBag $ Node.access $ 1(FrequencyBag.java:8)&#34;
以下是我的方法:
public int getMaxFreq() {
Node<T> currentNode = firstNode;
Node<T> nextNode = firstNode.next;
int compareVal = nextNode.freq;
int maxVal = currentNode.freq;
if (currentNode == null) {
maxVal = 0;
return maxVal;
}
while (nextNode.next != null) {
if (maxVal < compareVal) {
maxVal = compareVal;
}
else {
// Do nothing
}
currentNode = currentNode.next;
nextNode = nextNode.next;
}
if (nextNode.next == null) {
if (maxVal < nextNode.freq) {
maxVal = nextNode.freq;
} else {
// Do nothing
}
return maxVal;
}
return maxVal;
}
我想要在创建一个空包并调用我的getMaxFreq()方法时执行此操作,而不是获取空指针错误:
FrequencyBag<Integer> emptyBag = new FrequencyBag<Integer>();
System.out.println("Output: " + emptyBag.getMaxFreq());
Output: 0
答案 0 :(得分:0)
您可能需要先尝试检查currentNode == null,然后再尝试取消引用&#39; currentNode&#39;在第7行(似乎),这一行 - &gt; int maxVal = currentNode.freq;
否则你试图取消引用一个空指针,这就是喜欢抛出nullPointerException
同样适用于&#39; nextNode&#39;