O Exercicio é o seguinte
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.
Onde estou com dificuldade
A dificuldade geral eu acho que esta sendo absorver o conceito de OO, principalmente com as matrizes que guardam referencia a um objeto.
Esse codigo esta meio porco, tem algumas coisas inuteis ali, mas postei mesmo assim pois encontrei uma barreira, que é o metodo addPorta()
Uma correcao e algumas dicas de como entender melhor sao extremamente bem vindas =)
Erro que recebo ao executar
Exception in thread “main” java.lang.NullPointerException
at Casa.addPorta( ExCasa.java:38 )
at ExCasa.main( ExCasa.java:57 )
class Porta {
boolean aberta;
void fechaPorta() {
this.aberta = false;
}
void abrePorta() {
this.aberta = true;
}
}
class Casa {
String cor;
int numeroDePortas;
Porta qntPortas[] = new Porta[10];
void setColor(String c) {
this.cor = c;
}
void setPortas(int p) {
this.numeroDePortas = p;
}
int portasAbertas() {
int pa=0;
for(int i=0; i<this.qntPortas.length; i++) {
if(this.qntPortas[i].aberta==true) {
pa = pa+1;
}
}
return pa;
}
void addPorta(Porta p) {
for(int i=0; i<this.qntPortas.length; i++) {
if(this.qntPortas[i].aberta==false) {
this.qntPortas[i] = new Porta();
this.qntPortas[i].aberta = true;
break;
}
}
}
}
class ExCasa {
public static void main(String[] args) {
Casa c1 = new Casa();
c1.setColor("Verde");
c1.setPortas(3);
System.out.println("Cor: "+c1.cor);
System.out.println("Portas: "+c1.numeroDePortas);
Porta p1 = new Porta();
p1.abrePorta();
c1.addPorta(p1);
Porta p2 = new Porta();
p1.abrePorta();
c1.addPorta(p2);
Porta p3 = new Porta();
p1.abrePorta();
c1.addPorta(p3);
System.out.println("Abertas: "+c1.portasAbertas());
}
}