Olá pessoal,
Estou aprendendo a programar, e estou tentando resolver o seguinte exercício que retirei da apostila fj11 da caelum. http://www.caelum.com.br/caelum/curso-11.jsp :
Classe: Casa
Atributos: cor, totalDePortas, portas[]
Método: void pinta(String s), int quantasPortasEstaoAbertas(), void
adicionaPorta(Porta p), int totalDePortas()
Crie uma casa, pinte ela. Crie três portas e coloque-as na casa através do
método adicionaPorta, abra e feche as mesmas como desejar. Utilize o método
quantasPortasEstaoAbertas para imprimir o número de portas abertas e o método
totalDePortas para imprimir o total de portas em sua casa.
Criei 3 classes Casa, Porta e TestCasa.
//Casa
class Casa
{
String cor;
int totalDePortas;
Porta portas[];
void pinta(String s)
{
System.out.println("Casa pintada com cor " +s);
}
//devolve o numero de portas abertas
int quantasPortasEstaoAbertas()
{
int portasAbertas = 0;
for(int i=0; i<portas.length; i++)
{
if(portas[i].estaAberta()==true)
{
portasAbertas++;
}else
{
portasAbertas=portasAbertas;
}
}
return portasAbertas;
}
// adiciona a porta p se a casa ainda tiver espacos p montar porta
void adicionaPorta(Porta p)
{
for(int i=0; i<portas.length; i++)
{
if(portas[i]==null)
{
portas[i] = p;
}
else
{
System.out.println("Ja tem portas Completas");
}
}
}
//Devolve num de portas na Casa
int totalPortas()
{
int totPortas=0;
for(int i=0; i<portas.length; i++)
{
if(portas[i] != null)
{
totPortas++;
}
}
return totPortas;
}
}
/////Porta
class Porta
{
String cor;
boolean aberta;
double dimensaoX;
double dimensaoY;
double dimensaoZ;
void abre()
{
System.out.println ("Porta aberta");
}
void fecha()
{
System.out.println("Porta fechada");
}
void pinta(String s)
{
System.out.println("Porta pintada com cor " +s);
}
boolean estaAberta()
{
return this.aberta;
}
}
//Class de Teste
class TestCasa
{
public static void main(String[] args)
{
Casa minhaCasa = new Casa();
minhaCasa.pinta("branca");
Porta p1 = new Porta();
Porta p2 = new Porta();
Porta p3 = new Porta();
minhaCasa.adicionaPorta(p1);
minhaCasa.adicionaPorta (p2);
minhaCasa.adicionaPorta(p3);
minhaCasa.portas[0].abre();
minhaCasa.portas[1].abre();
minhaCasa.portas[2].fecha();
}
}
Quando tento correr a class TestCasa ele dá a seguinte mensagem:
Exception in thread “main” java.lang.NullPointerException
at Casa.adicionaPorta(Casa.java:30)
at TestCasa.main(TestCasa.java:14)
Agradeço desde já a ajuda.
Abraço