簡體   English   中英

遍歷列表給出了NullPointerException

[英]iterating through list gives a NullPointerException

我在一個類中定義了一個嵌套的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);

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

你好 我在名為“ Structure”的類中定義了一個嵌套的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);

(這是初始化的一部分。_al是ArrayList的ArrayList,我曾經為此調用過Collections.shuffle(_al)方法。)

然后,我想在“ Structure”類中定義一個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()方法時發生錯誤。 有什么問題嗎?

從空引用的個人經驗來看,

 _r0 = new HNode 
 _pos3 = new HNode etc  

一片空白。 您是否嘗試過使用調試器?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM