我在一个类中定义了一个嵌套的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()方法时发生错误。有什么问题吗?
答案 0 :(得分:0)
根据空引用的个人经验,似乎很可能
_r0 = new HNode
_pos3 = new HNode etc
是null。您是否尝试过使用调试器?