链接列表实现中我的方法的空指针异常

时间:2014-09-27 01:43:37

标签: java data-structures

我正在构建一个类似于整数,字符串或字符的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

1 个答案:

答案 0 :(得分:0)

您可能需要先尝试检查currentNode == null,然后再尝试取消引用&#39; currentNode&#39;在第7行(似乎),这一行 - &gt; int maxVal = currentNode.freq;

否则你试图取消引用一个空指针,这就是喜欢抛出nullPointerException

同样适用于&#39; nextNode&#39;