Bom dia. Já vi outros comentários a respeito desse tema e tentei implementar a solução com as dicas dos tutores, porém o erro permanece.
package listaligada;
public class Celula {
private Object elemento;
private Celula proximo;
public Celula(Object elemento, Celula proximo) {
this.elemento = elemento;
this.proximo = proximo;
}
public Object getElemento() {
return elemento;
}
public Celula getProximo() {
return proximo;
}
public void setProximo(Celula proximo) {
this.proximo = proximo;
}
}
package listaligada;
public class ListaLigada {
private Celula primeira = null;
private Celula ultima = null;
private int totalDeElementos = 0;
public void adicionaNoComeco(Object elemento) {
Celula nova = new Celula(elemento, primeira);
this.primeira = nova;
if (totalDeElementos == 0) {
this.primeira = this.ultima;
}
this.totalDeElementos++;
}
@Override
public String toString() {
if (this.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();
}
// adiciona no fim
public void adiciona(Object elemento) {
if (totalDeElementos == 0) {
adicionaNoComeco(elemento);
} else {
Celula nova = new Celula(elemento, null);
this.ultima.setProximo(nova);
this.ultima = nova;
totalDeElementos++;
}
}
// adiciona numa posição qualquer
public void adiciona(int posicao, Object elemento) {
}
public Object pega(int posicao) {
return null;
}
public void remove(int posicao) {
}
public int tamanho() {
return 0;
}
public boolean contem(Object o) {
return false;
}
}
package listaligada;
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("Paulo");
System.out.println(lista);
lista.adicionaNoComeco("Guilherme");
System.out.println(lista);
lista.adiciona("Marcelo");
System.out.println(lista);
}
}
Ao debugar o códgo, ele reclama do campo "atual" que é nulo. Atual é igual a primeira que é null. Já tentei inicializar de outra maneira, mas permanece o erro.
[]
Exception in thread "main" java.lang.NullPointerException
at listaligada.ListaLigada.toString(ListaLigada.java:32)
at java.base/java.lang.String.valueOf(String.java:3388)
at java.base/java.io.PrintStream.println(PrintStream.java:1047)
at listaligada.TestaListaLigada.main(TestaListaLigada.java:11)