Utilizar referência de dentro de um for

Pessoal, tenho as seguintes classes:

[code]public class OutraCasa {

String cor;
int totalDePortas;
Porta[] portas = new Porta[10];
int abertas = 0;

void pinta(String s){
	String novaCor = s;
	this.cor = novaCor;
}

void abre(Porta p){
	this.abertas = this.abertas + 1;
}

void quantasPortasEstaoAbertas(){
	System.out.print(this.abertas + " portas abertas");
	//return abertas;

}

void adicionaPorta(Porta p, int i){
	if (this.portas[i] == null){
		this.portas[i] = p;
	}

}

int totalDePortas(){
	int total = 0;
	for (int i = 0; i < this.portas.length; i++){
		if (this.portas[i] != null){
			total = total + 1;
		}
	}		
	return total;

}

}[/code]

[code]public class TestaCasa {

public static void main(String[] args) {

	OutraCasa casa2 = new OutraCasa();


	for (int i = 0; i < 3; i++){
		OutraCasa casa1 = new OutraCasa();
		Porta porta1 = new Porta();
		porta1.nome = "porta" + i;
		if (porta1.nome == "porta2"){
			casa1.abre(porta1);
		}
		casa1.adicionaPorta(porta1,1);

	}
	System.out.println(casa2.totalDePortas());
	System.out.println(casa2.quantasPortasEstaoAbertas());



}

}
[/code]

Eu queria conseguir exibir os valores dos métodos toalDePortas() e quantasPortasEstaoAbertas() da referência casa1, mas ela está dentro de um for. Eu consigo de alguma forma fazer isso? Pensei um pouco mas acredito que seja questão de sintaxe.

O nosso colega tá cheio de dúvidas… hehhe
porque vc nao cria ela fora do for ???
qual a diferença???

dentro do for ela será apenas uma variável local, fora dele poderá ser uma de instância.

ah só lembrando que para comparação de strings vc deverá usar o método equals("porta 2 ") em vez de ==“porta2” .

Pois é cara, não tenho a quem perguntar, e quando eu já não consigo pensar eu pergunto sem muitas delongas. Até pq tenho pouco tempo por dia pra estudar.

Bom, sobre o código, é por que dentro do for o código fica mais limpo ou como a apostila disse: mais elegante rs.

Caso contrário, eu teria que fazer:

[code]Porta porta1 = new Porta();
porta1.nome = “porta1”;

Porta porta2 = new Porta();
porta2.nome = “porta2”;

Porta porta3 = new Porta();
porta3.nome = “porta3”;[/code]

Obrigado pela dica do equals :wink:

Cria uma lista, e adicione as instancias dentro dessa lista. Depois é só você dar um get(indice).totalDePortas().

Existem muitas outras coisas estranhas no seu projeto.

Coisas estranhas como o quê?

Exemplo:

 void abre(Porta p){  
        this.abertas = this.abertas + 1;  
    }  

Você passa uma Porta como parametro mas nunca utiliza essa variável.

Outro exemplo:

Você tem um atributo chamada totalDePortas mas nunca o utiliza.

Ah sim, mas são coisas que eu coloco pra utilizar depois. Eu crio a “estrutura” pra depois ir implementando conforme o exercício pede.