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

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)

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.

[quote=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.[/quote]

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.

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

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.