Boa tarde pessoal, sou iniciante emJava e estou tendo problemas para resolver um exercício:
Estou recebendo esse seguinte erro:
Exception in thread "main" java.lang.NullPointerException
at exerciciosoo.Casa.fechaPorta(Casa.java:46)
at exerciciosoo.Main.main(Main.java:24)
Java Result: 1
Ok, já identifiquei que a referência é nula a minha variável consultada ou pesquisada, mas porque?
Quase toda minha aplicação retorna isso quando preciso fazer testes.
Vou postas as classes:
Mainpackage exerciciosoo;
/**
*
* @author Uriel
*/
public class Main {
public static Casa casa = new Casa("Uriel", 40);
public static void main(String[] args) {
casa.setPortas(4);
System.out.println(casa.getPortas());
casa.fechaPorta(4);
casa.fechaPorta(2);
casa.abrePorta(1);
casa.abrePorta(3);
System.out.println("O numero de portas abertas são: " + casa.portasAbertas());
}
}
package exerciciosoo;
/**
*
* @author Uriel
*/
public class Construcao {
protected int numero;
protected Pessoa proprietario;
public Construcao(String nome, int numero)
{
this.numero = numero;
this.proprietario = new Pessoa(nome);
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public Pessoa getProprietario() {
return proprietario;
}
public void setProprietario(Pessoa proprietario) {
this.proprietario = proprietario;
}
}
Casa
package exerciciosoo;
/**
*
* @author Uriel
*/
public class Casa extends Construcao {
private Porta [] portas;
public Casa(String nome, int numero)
{
// Referencia a superclasse
super(nome, numero);
}
// Devolve o numero de portas
public int getPortas() {
return portas.length;
}
public void setPortas(int num) {
this.portas = new Porta[num];
}
public Porta getPorta(int index)
{
Porta porta_selecionada = new Porta();
for(int i = 1; i < portas.length; i++ )
{
porta_selecionada = portas[index];
}
return porta_selecionada;
}
public void fechaPorta(int index)
{
Porta porta_selecionada = new Porta();
for(int i = 0; i < portas.length; i++ )
{
porta_selecionada = portas[index-1];
porta_selecionada.fechar();
}
}
public void abrePorta(int index)
{
for(int i = 0; i < portas.length; i++ )
{
Porta porta_selecionada = portas[index-1];
porta_selecionada.abrir();
}
}
public int portasAbertas()
{
int abertas = 0;
Porta porta_selecionada = new Porta();
for(int i = 0; i < portas.length; i++ )
{
porta_selecionada = portas[i];
if(porta_selecionada.getStatus())
{
abertas++;
}
}
return abertas;
}
public int portasFechadas()
{
int fechadas = 0;
Porta porta_selecionada = new Porta();
for(int i = 0; i < portas.length; i++ )
{
porta_selecionada = portas[i];
if(!porta_selecionada.getStatus())
{
fechadas++;
}
}
return fechadas;
}
}
Porta
package exerciciosoo;
/**
*
* @author Uriel
*/
public class Porta {
private boolean aberto = false;
public void abrir()
{
aberto = true;
}
public void fechar()
{
aberto = false;
}
public boolean getStatus()
{
return aberto;
}
}