Duvida de erro em array

2 respostas
G

ola pessoa resolvi fazer um exercicio em java mais nao entendi pq esta dano erro na classe TesCasa, ta dizendo

Exception in thread "main" java.lang.NullPointerException
at TestCasa.main(TestCasa.java:12)

só que eu fiz um array de tamanho 3 e nao sei o motivo do erro sei q se eu mudar a logica vai dar certo mais eu quero saber o motivo do erro

o codigo das Classes são esses

public class Porta {
	
	private String cor;
	boolean aberta;
	float dimensaoX;
	float dimensaoY;
	float dimensaoZ;
	
	public void abre()
	{
		this.aberta = true;		
	}
	
	public void fecha()
	{
		this.aberta = false;
	}
	
	public void pinta(String s)
	{
		this.cor = s;
	}
	
	public boolean estaAberta()
	{
		if(aberta)
		{
			System.out.println("A porta esta aberta");
			return true;
		}
		else
		{
			System.out.println("A porta esta fechada");
			return false;
		}	
		
	}

}
public class Casa {

  String cor;
  int totalDePortas;
  Porta[] portas;
  
  
  
  
  public int totalDeportas()
  {
	  totalDePortas = this.portas.length;
	  return this.totalDePortas;
  }
  
  public void adicionaPorta(Porta p)
  { 
	  for(int i=0;i<portas.length;i++)
	  {
		  if(this.portas[i] ==null)
		  {
			  this.portas[i] = p;
			  break;
		  }
		  
	  }
	  
  }
  
  
  public void pinta(String s)
  {
	  this.cor = s;
  }
  
  public int quantasPortasEstaoAberta()
  {
	  int contadorDePortas = 0;
	  for(int i=0; i < this.portas.length; i++)
	  {
		  if(this.portas[i].aberta==true)
			  contadorDePortas++;
			  
	  }
	 	 
	  return contadorDePortas;	  
  }
  


}
public class TestCasa 
{
		
	public static void main(String args[])
	{

		Casa casa = new Casa();
		casa.portas =  new Porta[3];
		  
		
		
		casa.pinta("branca");
		casa.portas[0].dimensaoX = 1.00f;
		casa.portas[0].dimensaoY = 2.00f;
		casa.portas[0].dimensaoZ = 0.06f;
		casa.portas[0].abre();
		casa.portas[0].pinta("verde");
		
		casa.portas[1].dimensaoX = 1.00f;
		casa.portas[1].dimensaoY = 2.00f;
		casa.portas[1].dimensaoZ = 0.06f;
		casa.portas[1].abre();
		casa.portas[1].pinta("verde");
		
		casa.portas[2].dimensaoX = 1.00f;
		casa.portas[2].dimensaoY = 2.00f;
		casa.portas[2].dimensaoZ = 0.06f;
		casa.portas[2].fecha();
		casa.portas[2].pinta("verde");
		
		casa.adicionaPorta(casa.portas[0]);
		casa.adicionaPorta(casa.portas[1]);
		casa.adicionaPorta(casa.portas[2]);
		
		System.out.println(casa.totalDeportas());
		System.out.println(casa.quantasPortasEstaoAberta());
		
	}
}

2 Respostas

malokas

Porque as portas estão null. Você tem que instanciar as portas.

casa.portas[0] = new Porta();

Faz isso para todas as portas do array que vai funcionar.

G

vlw Malokas

Criado 12 de abril de 2011
Ultima resposta 13 de abr. de 2011
Respostas 2
Participantes 2