2015-02-21 3 views
-2

Как сделать узел «впереди» для параметра «head» объекта stop равным «Null», когда я использую на нем .getNext()? Я просто получаю NullPointerException каждый разКак я могу сделать остановку узла узла равным Null?

LinkedNode имеет параметры LinkedNode и данные E.

package sets; 

import java.util.Iterator; 
import java.util.NoSuchElementException; 

class LinkedNodeIterator<E> implements Iterator<E> { 

private LinkedNode<E> ahead; 
private E data; 

public LinkedNodeIterator(LinkedNode<E> head) { 
    ahead = head; 
    data = ahead.getData(); 
} 

public boolean hasNext(){ 
    boolean here = false; 
    LinkedNode<E> currNode = this.ahead; 
    if(currNode.getNext() != null) here = true; 
    return (here); 
} 
//othercode... 
} 

и

package sets; 

public class LinkedNode<E> { 
    private E data; 
    private LinkedNode<E> next; 

    public LinkedNode(E data, LinkedNode<E> next) { 
    this.data = data; 
    this.next = next; 
    } 

    public E getData(){ 
    return data; 
    } 

    public LinkedNode<E> getNext(){ 
    return this.next; 
    } 
} 
+0

, пожалуйста, добавьте полный исходный код для LinkedNode, или, по крайней мере, проясните методы getData(), getNext(). – eis

+0

Я только что сделал это – xen05z

ответ

0

Учитывая эту программу, и предполагая, что больше нет методов, которые изменяют ahead переменную, единственно возможный путь для вперед, чтобы быть нулевым, в его инициализации: В других слова, ahead - это только если параметр head - null.

Я предлагаю вам две вещи:

  • Убедитесь, что нет больше методов, изменяющих переменную ahead. Один верный способ добиться этого - объявить его final (а также хорошей практикой).

  • Добавить Assert в первой строке конструктора:

 
    assert head!=null; 

... и запустить программу с "Java -EA", чтобы дать возможность утверждения.

Смежные вопросы