Dúvida Exercício FJ-11 5.8 [RESOLVIDO]

3 respostas
A
class Casa {
	String cor;
	int totalDePortas;
	String[] porta;	
		
	void pinta(String s) {
		cor = s;
	}
	
	int quantasPortasEstaoAbertas() {
		int contAberta = 0;
		while (porta.equals("aberta")) {
			contAberta++; 
		}
		System.out.println("A casa possui " + contAberta + " portas abertas!");

			return contAberta;
		}
		
	void adicionaPorta() {
		porta = new String[3];

	}
	
	int totalDePortas() {
		int contAberta = 0;
		int contFechada = 0;
		
		if (porta.equals("fechada")) {
			contFechada++; 
		} else {
			contAberta++;
		}
		
		this.totalDePortas = contAberta + contFechada;
			System.out.println("A casa possui " + totalDePortas + " portas!");
			return totalDePortas;
	}
}
class CasaTeste {
	public static void main(String[]args){
		Casa casa1 = new Casa();
		casa1.pinta("azul");
		casa1.adicionaPorta();
		casa1.porta[0] = "aberta";
		casa1.porta[1] = "fechada";
		casa1.porta[2] = "aberta";
		
		casa1.quantasPortasEstaoAbertas();
		
		casa1.totalDePortas();
		
	}
}

O código acima está dando a seguinte saída: A casa possui 0 portas Aberta! e A casa possui 1 postas!

O que fiz de errado?
abraço

3 Respostas

lina

Oi,

A comparação abaixo esta errada:

while (porta.equals("aberta")) { contAberta++; }

a variável porta é um array de String com 3 posições (String[3]) e da maneira como você fez, estaria comparando o tipo de objeto e não o valor presente no objeto.

Logo, deverá ser feito:

for (int i = 0; i < porta.length; i++) { if (porta[i].equals("aberta")) contAberta++; }

ou então:

for (String as_portas : porta) { if (as_portas.equals("aberta")) contAberta++; }

Tchauzin!

A

Entendi, agora deu certo!
Muito Obrigado!!!

lina

Oi,

Se o seu tópico foi respondido e você está satisfeito, segue:

  • Pressione o botão de seu primeiro post
  • Acrescente no final do título a tag [RESOLVIDO]

Tchauzin!

Criado 22 de março de 2011
Ultima resposta 23 de mar. de 2011
Respostas 3
Participantes 2