[Resolvido] java.lang.NullPointerException ao acessar um metodo

4 respostas
chmod_700

E ai pessoas, minha primeira vez aqui nesse fórum.

Meu problema é o seguinte, sou iniciante em java e acredito que o erro (java.lang.NullPointerException) esteja ligado a algum conceito que eu ainda não fixei.

No meu programa exemplo eu tenho duas classes:

  • a primeira para calculos acerca de consumo de combustivel, volta de pitstop, etc, de uma corrida.
  • a segunda classe trata apenas dos pits (tendo atributos como tempo de pit, volta do pit ,etc)

o problema esta nesse método da primeira classe(linha 3 - “voltasDeParada[0].setVolta(voltasPossiveis);”):

public pit[] calculaVoltaPit(){
		int voltasPossiveis = (int)Math.floor(this.qtdVoltasCorrida / (this.calculaQtdPits()+1));
		pit[] voltasDeParada = new pit[this.calculaQtdPits()];
		voltasDeParada[0].setVolta(voltasPossiveis);
		for (int i=1; voltasDeParada.length > i; i++){
			voltasDeParada[i].setVolta(voltasDeParada[i-1].getVolta() + voltasPossiveis + 1);
		}
		return voltasDeParada;
	}

o erro retornado é esse:

Exception in thread main java.lang.NullPointerException

at consumoCombustivel.calculaVoltaPit(consumoCombustivel.java:57)

at consumoCombustivel.main(consumoCombustivel.java:71)

4 Respostas

peczenyj

NullPointerException ocorre, basicamente, quando vc tem algo como

MeuObjeto minhaVariavel = null; // não inicializado!
minhaVariavel.algumMetodo(); // tcharam!!!

Basta vc procurar por alguma situação assim.

No seu caso, vc inicializou um Array do Tipo ‘pit’ mas não inicializou o(s) elemento(s) desse array. Experimente fazer

voltasDeParada[0] = new pit(); // ou algo do tipo
e, dentro do for

voltasDeParada[i] = new pit();

para inicializar todos os elementos.

chmod_700

peczenyj:
NullPointerException ocorre, basicamente, quando vc tem algo como

MeuObjeto minhaVariavel = null; // não inicializado!
minhaVariavel.algumMetodo(); // tcharam!!!

Basta vc procurar por alguma situação assim.

Essa parte eu entendi, o erro ocorre quando vc tenta acessar um obj nulo, mas quando eu declaro o array na linha 3 os objetos estão nulos?

apenas corrigindo o erro esta ocorrendo na linha 4 e não na 3 como eu tinha dito.

peczenyj

Vc inicializou um array, não os elementos desse array :wink:

chmod_700

Compreendi…
o código ficou assim:

public pit[] calculaVoltaPit(){
		int voltasPossiveis = (int)Math.floor(this.qtdVoltasCorrida / (this.calculaQtdPits()+1));
		pit voltasDeParada[] = new pit[this.calculaQtdPits()];
		voltasDeParada[0] = new pit();
		voltasDeParada[0].setVolta(voltasPossiveis);
		for (int i=1; voltasDeParada.length > i; i++){
			voltasDeParada[i] = new pit();
			voltasDeParada[i].setVolta(voltasDeParada[i-1].getVolta() + voltasPossiveis + 1);
		}
		return voltasDeParada;
	}

valeu peczenyj, até mais.

Criado 9 de abril de 2009
Ultima resposta 9 de abr. de 2009
Respostas 4
Participantes 2