0

我在一个类中定义了一个嵌套的 Node 类,并且

class HNode<T extends ArrayList> {
    private T _datum;
    private HNode<T> _prev;
    private HNode<T> _next;

    public HNode(T datum, HNode<T> prev, HNode<T> next) {
        _datum = datum;
        _prev = prev;
        _next = next;
    }

    public HNode<T> getNext() {
        return _next;
    }

当我创建这个 Node 类时,我手动指定了 _datum、_prev 和 _next 字段。

    _r0 = new HNode<ArrayList<String>>(_al.get(3), _r0, _r1);
    _r1 = new HNode<ArrayList<String>>(_al.get(4), _r0, _r2);
    _r2 = new HNode<ArrayList<String>>(_al.get(5), _r1, _pos3);
    _pos3 = new HNode<ArrayList<String>>(_al.get(6), _r2, _pos4);
    _pos4 = new HNode<ArrayList<String>>(_al.get(7), _pos3, _pos5);

(这是初始化的一部分。)

你好。我在名为“结构”的类中定义了一个嵌套节点类,并且

class HNode<T extends ArrayList> {
    private T _datum;
    private HNode<T> _prev;
    private HNode<T> _next;

    public HNode(T datum, HNode<T> prev, HNode<T> next) {
        _datum = datum;
        _prev = prev;
        _next = next;
    }

    public HNode<T> getNext() {
        return _next;
    }

当我创建这个 Node 类时,我手动指定了 _datum、_prev 和 _next 字段。

    _r0 = new HNode<ArrayList<String>>(_al.get(3), _r0, _r1);
    _r1 = new HNode<ArrayList<String>>(_al.get(4), _r0, _r2);
    _r2 = new HNode<ArrayList<String>>(_al.get(5), _r1, _pos3);
    _pos3 = new HNode<ArrayList<String>>(_al.get(6), _r2, _pos4);
    _pos4 = new HNode<ArrayList<String>>(_al.get(7), _pos3, _pos5);

(这是初始化的一部分。_al 是 ArrayList 的一个 ArrayList,我曾经为此调用 Collections.shuffle(_al) 方法。)

然后我想在“结构”类中定义一个 getPosition 方法。当我测试这个方法时,它会抛出一个 NullPointerException。

我用 if 语句划分这个方法的原因是第 2 和第 3、第 16 和第 17 节点没有相互连接。

我猜是 pos.getNext(); 的 for 循环。不过,可能是问题的原因,而不是条件语句。

public HNode<ArrayList<String>> getPosition(int index) {
    HNode<ArrayList<String>> pos = null;
    if(index<3) {
        pos = _l0;
        for(int i=0; i<index; i++) {
            pos = pos.getNext();
        }
    }
    else if(3<=index && index <= 16) {
        pos = _r0;
        for(int i=0; i<(index-3); i++) {
            pos = pos.getNext();
        }
    }
    else if(index <= 17 && index <= 24) {
        pos = _w1;
        for(int i=0; i<(index-17); i++) {
            pos = pos.getNext();
        }
    }
    return pos;
}

你知道为什么这会产生 NullPointerException 吗?我试图弄清楚这一点,但无法解决。请给我一个建议。谢谢!


当我调用 getNext() 方法时发生错误。有什么问题吗?

4

1 回答 1

0

从空引用的个人经验来看,似乎很可能

 _r0 = new HNode 
 _pos3 = new HNode etc  

一片空白。您是否尝试过使用调试器?

于 2013-04-03T02:44:01.360 回答