Boa noite,
Estou tentando resolver o exercício 3, Seção 4.14 da apostila de Java Básico da Caelum, e fiquei com algumas dúvidas no erro que apareceu no momento da compilação.
Optei por não postar todo o enunciado para não deixar o post extenso demais, mas ele está aqui.
Trabalhei com 3 classes: uma classe Porta.java, outra classe Casa.java e a classe com o método main chamada TestaCasa.java. Os códigos são estes:
Porta.java:class Porta{
Boolean aberta;
String cor = "Amarela";
int dimensaoX = 10;
int dimensaoY = 20;
int dimensaoZ = 30;
void abre(){
aberta = true;
}
void fecha(){
aberta = false;
}
void pinta(String novaCor){
cor = novaCor;
}
boolean estaAberta(){
if (aberta){
return true;
}
else{
return false;
}
}
void mostra(){
System.out.println("Dimensao X: " + this.dimensaoX);
System.out.println("Dimensao Y: " + this.dimensaoY);
System.out.println("Dimensao Z: " + this.dimensaoZ);
System.out.println("Cor atual: " + this.cor);
System.out.println("Esta aberta? " + this.estaAberta());
}
}
class Casa{
String cor = "Verde";
Porta porta1;
Porta porta2;
Porta porta3;
void pinta(String s){
cor = s;
}
int quantasPortasEstaoAbertas(){
int i = 1;
if (this.porta1.estaAberta()){
i++;
}
if (this.porta2.estaAberta()){
i++;
}
if (this.porta3.estaAberta()){
i++;
}
return i;
}
}
class TestaCasa {
public static void main(String[] args) {
Casa c = new Casa();
Porta porta1 = new Porta();
Porta porta2= new Porta();
Porta porta3 = new Porta();
c.pinta("Azul");
c.porta1.abre();
c.porta2.abre();
c.porta3.abre();
//c.porta1.aberta = true;
//c.porta2.aberta = true;
//c.porta3.aberta = true;
c.quantasPortasEstaoAbertas();
}
}
Exception in thread "main" java.lang.NullPointerException
at TestaCasa.main(TestaCasa.java:10)
E acontece o mesmo erro se substituo as linhas 10-12 pelos códigos comentados.
Procurando aqui no fórum, vi algumas soluções em postagens mais antigas que criam o objeto Porta na própria classe Casa, através de:
Porta porta1 = new Porta();
Agradeço qualquer insight,
TG
