1
resposta

NullPoint Lista Ligada até aos 12:48

Olá ! Senhores implementei o código ate o tempo supracitado, conforme o professor e está me retornando um erro , já olhei as respostas dos demais e nada , continua. Segue abaixo o erro e o meu código:

[] Exception in thread "main" java.lang.NullPointerException: Cannot invoke "ed.Celula.getElemento()" because "atual" is null at ed.ListaLigada.toString(ListaLigada.java:62) at java.base/java.lang.String.valueOf(String.java:3367) at java.base/java.io.PrintStream.println(PrintStream.java:1047) at ed.TestaListaLigada.main(TestaListaLigada.java:11)

package ed;

public class Celula {

 private Object elemento;
    private Celula proximo;

    public Celula(Object elemento, Celula proximo) {
        this.elemento = elemento;
        this.proximo = proximo;
    }

    public Celula(Object elemento) {
        this.elemento = elemento;
    }

    public Celula getProximo() {
        return proximo;
    }

    public void setProximo(Celula proximo) {
        this.proximo = proximo;
    }

    public Object getElemento() {
        return elemento;
    }

}

package ed;

public class ListaLigada {

private Celula primeira = null;
private Celula ultima = null;
private int totalDeElementos=0;

public void adicionaNoComeco(Object element) {

    Celula novo = new Celula(element, primeira);
    this.primeira= novo;
    if(this.totalDeElementos == 0) {
        this.primeira = this.ultima;
    }
    this.totalDeElementos++;
};

public void adiciona(Object elemento ) {
    Celula nova = new Celula(elemento);

    if (primeira == null) {
        primeira = nova;
        ultima = nova;
    } else {
        ultima.setProximo(nova);
        ultima = nova;
    }

    this.totalDeElementos++;

};


public void adiciona(int posicao,Object element ) {




};

public Object pega(int posicao) {return null;};

public void remove(int posicao) {};

public int tamanho() {return 0;};

public boolean contem (Object e) {return false;};

@Override
public String toString() {

    if(totalDeElementos == 0) {
        return "[]";
    }

    Celula atual = primeira;

    StringBuilder builder = new StringBuilder("[");

    for(int i =0 ; i < totalDeElementos;i++) {
        builder.append(atual.getElemento());
        builder.append(",");

        atual = atual.getProximo();
    }

    builder.append("]");

    return builder.toString();
}

}

package ed;

public class TestaListaLigada {

public static void main(String[] args) {

    ListaLigada lista = new ListaLigada();

    System.out.println(lista);
    lista.adicionaNoComeco("Mauricio");
    System.out.println(lista);
    lista.adicionaNoComeco("Golem");
    System.out.println(lista);
    lista.adicionaNoComeco("Endermen");
    System.out.println(lista);
    lista.adicionaNoComeco("Miguel");
    System.out.println(lista);
    lista.adicionaNoComeco("Lee");
    System.out.println(lista);

    lista.adiciona("Roberto");
    System.out.println(lista);
}

}

1 resposta

Olá Francisco, tudo bem?

Desculpe pela demora em obter retorno.

No seu método adicionaNoComeco da classe ListaEncadeada, quando você faz

if(this.totalDeElementos == 0) {
        this.primeira = this.ultima;
}

você está fazendo o primeiro elemento apontar para o último, que é nulo. Para corrigir, você deve trocar a ordem, fazendo o último apontar para o primeiro elemento, deixando de ser nulo:

if(this.totalDeElementos == 0) {
        this.ultima = this.primeira;
}

Espero ter ajudado! Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!