Utilizar referência de dentro de um for

6 respostas
andrepm

Pessoal, tenho as seguintes classes:

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;

	}

}
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());



	}

}

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.

6 Respostas

A

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” .

andrepm

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:

Porta porta1 = new Porta();  
            porta1.nome = "porta1";

Porta porta2 = new Porta();  
            porta2.nome = "porta2";

Porta porta3 = new Porta();  
            porta3.nome = "porta3";

Obrigado pela dica do equals ;)

S

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.

andrepm

Coisas estranhas como o quê?

S

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.

andrepm

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.

Criado 17 de março de 2014
Ultima resposta 18 de mar. de 2014
Respostas 6
Participantes 3