Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Exception in thread "main" no método InsereFinal da lista

Saudações, estou com esse problema nesse método. public void InsereFinal(Object elemento) { if(this.totaldeElementos==0) { InserirInicio(elemento); } else { Celula nova = new Celula(elemento, null); //estou apontando o elemento para a nova célula da última posição this.ultimo.setProximo(nova); this.ultimo=nova; this.totaldeElementos++; } }

porém na saída do console apresenta Exception in thread .... dizendo que o erro está nessa linha >>this.ultimo.setProximo(nova);<< , como eu posso resolver esse problema?

7 respostas

Poderia postar a exceção completa?

claro :

[Mario-Gabriel-Maurício-] Exception in thread "main" java.lang.NullPointerException at Listas.ListaLigada.InsereFinal(ListaLigada.java:24) at Listas.TesteListaLigada.main(TesteListaLigada.java:14)

Qual é a linha 24?

solução!

Boa noite, AnaBrando! Como vai?

O que está acontecendo é que ao que tudo indica vc esqueceu de inicializar o atributo ultimo da sua classe! Daí quando vc faz this.ultimo.setProximo(nova) essa exceção é lançada, afinal de contas como this.ultimo é nulo, não tem como chamar o método setProximo()! Inicialize o seu atributo e o problema deverá ser resolvido! Mas se tiver alguma dificuldade quanto a isso é só falar que eu te ajudo!

OBS.: A convenção de códigos em Java orienta que nomes de métodos devem começar sempre com letras minúsculas! Então, o seu método InsereFinal() na realidade veria se chamar insereFinal().

Aprendizado para a vida: Sempre que for compartilhar um código aqui no fórum, utilize o botão "inserir código" para que ele seja postado com a formatação correta e facilite na hora de analisá-lo e te ajudar!

Grande abraço e bons estudos!


Olá, boa noite , desculpe a demora, Gabriel eu já inicializei nulo a variável mas mesmo assim o erro persiste :( . E obrigada pelo os conselhos.


package Listas;

public class ListaLigada {

private Celula primeiro=null; private Celula ultimo=null; protected int totaldeElementos=0;

public void inserirInicio(Object elemento) { Celula nova = new Celula(elemento, primeiro); this.primeiro=nova; this.totaldeElementos++; if (this.totaldeElementos == 0) { this.ultimo=this.primeiro; } }

public void insereFinal(Object elemento) { if(this.totaldeElementos==0) { inserirInicio(elemento); } else { Celula nova = new Celula(elemento, ultimo); //estou apontando o elemento para a nova célula da última posição this.ultimo.setProximo(nova); this.ultimo=nova; this.totaldeElementos++; } }

public void adiciona(int posicao,Object elemento) {} public Object pega(int posicao) {return null;} public int tamanho () {return 0;}; public boolean contem(Object o) {return false;}

@Override public String toString() { if (this.totaldeElementos==0) { return "[]"; } Celula atual = primeiro; 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();

} }

```

Então, é justamente por inicializar ela como null que esse esse erro está acontecendo! Vc precisa inicializar ela com um valor diferente de nulo ou então, na hora de inserir um novo elemento, verificar se o valor de ultimo é nulo para evitar esse erro!