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 
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.