这个Java代码有什么问题

时间:2012-10-26 21:46:55

标签: java

这是我的Josephus类的add方法,我应该使用循环链接列表。我在我的类的一些区域中获得空指针异常,但这都是因为这种方法。通过查看此代码,任何人都可以看到任何明显的错误吗?

/** Inserts the specified element in the list at the
     last position
     @param dataItem the element to add
   */
 // Complexity O(1)
 @SuppressWarnings({ "unchecked" })
public void add(E dataItem) {
    Node <E> node = new Node <E> (dataItem,null,null);
    if (count == 0){ // list is empty
        head = node.previous= node;  
    }

    else {
       head.previous.next = node;
       node.previous = head.previous;
       head.previous = node;
    }
    count++; 
    }

完整代码:http://pastebin.com/k4Hmbqmw

2 个答案:

答案 0 :(得分:6)

是的,您需要将else部分用大括号括起来:

public void add(E dataItem) {
    Node <E> node = new Node <E> (dataItem, null, null);
    if (count == 0) { // list is empty
        head = node.previous= node ;  
    } else {
       (head.previous).next = node;
       node.previous = head.previous;
       head.previous = node;
    }
    count++;
}

否则,每次执行最后三行而不是最后一行。

答案 1 :(得分:1)

你在if / else块周围没有花括号