Dor de cabeça com arrays

6 respostas
Juninho_Andrade

Boa noite. Da uma olhadinha no código:

class Apartamento {
	String cor;
	int totalDePortas;
	Porta[] porta;
	
	void adicionaPorta(Porta p){
		for(int i=0;i<porta.length;i++){
			if(porta[i]==null){
				porta[i]=p;
				
				System.out.println("Porta do(a):"+p.local);
				System.out.println("A porta esta aberta?"+p.aberta);
				break;
			}
		}
	}
	
	void quantasPortasEstaoAbertas(){
		for(Porta x : porta){
			if(x.aberta==true){
				System.out.println();
			}
		}
	}
	
	int totalDePortas(){
		for(int i=0;i<porta.length;i++){
			if(porta[i]==null){
				return ;
			}
		}
		return 0;
		
	}
}

class Porta{
	String local;
	boolean aberta;
}

Já tentei tudo dentro do meu conhecimento em java e meu código não da certo. O que quero e imprimir quantas portas estão abertas ou seja que se referencião a true o e total de portas que a no apartamento, espero que possam me ajudar.Obrigado.

6 Respostas

peczenyj

Experimente usar uma classe Vector.

class Apartamento {
	Vector portas;
	
	public Apartamento(){ this.portas = new Vector();	}		
 	
	void adicionaPorta(Porta p){
		this.portas.addElement(p);
 		System.out.println("Porta do(a):"+ p.local + " esta "
					+ ((p.aberta)? "aberta" : "fechada")); 		
 	}
 	
 	int quantasPortasEstaoAbertas(){
		int total=0;
		for(int i=0;i<this.portas.size();i++){
/* aqui o java encontra o lisp mas sem elegancia */
			if(((Porta) this.portas.get(i)).aberta) total++;
		}		
		return total;
 	}
 	
 	int totalDePortas(){ return this.portas.size(); }
 }
 
 class Porta{
 	String local;
 	boolean aberta;	 
 }
leomc

Tente dar uma olhadinha em Collections, você nunca mais vai querer usar array

L

Neste seu problema fica realmente complicado usar array porque você não sabe logo no começo qtas posições vai ter, então, pra usar array você só teria duas soluções toscas:

  1. iniciar o array com um tamanho gigante
  2. ir rediomensionando o array a cada inclusão(ou a cada 10).

Então nesse seu caso realmente é mais interessante usar alguma classe de Collection…

Porém, usar array de primitivos pode ser muito interessante e mesmo conhecendo Collections eu ainda gosto de usar eles! hehehe

Se você sabe o tamanho do array logo no início é muuuuito mais rápido usar um array…eu garanto…principalmente se for de primitivo…onde a JVM teria q ficar fazendo Boxing, UnBoxing a cada inclusão de valor se vc usar Collections. A performance fica uma tragédia…experiência própria! :slight_smile:

L

Só uma pergunta Juninho…da onde é esse problema? Porque eu lembro de ter resolvido um muito parecido com esse um tempo atrás…

Raff

Juninho estude Collections … não que naun seja importante voce apreender array mas ate voce absorver bem o conteudo de array… isso é normal … para quem esta comecando com java … :slight_smile:

Juninho_Andrade

Peguei esse Problema em uma apostila no site da caelum.
www.caelum.com.br

Criado 4 de novembro de 2006
Ultima resposta 4 de nov. de 2006
Respostas 6
Participantes 5