Dúvida no retorna da operação boolean estaAberta() {}?

6 respostas
diegohsi

Pessoal, estou com uma dúvida muito simples, minha operação boolean estaAberta() {} verifica se a porta esta aberta ou nao dai quando imprimo na classe TestePorta aparece o retorno true/false. Gostaria de saber se estou fazendo algo errado e como devo proceder para não apresentar o valor booleano no main(). A minha operação deve ser boolean e não void.

package fixando_conhecimento_414_pag60;

public class Porta {
	String cor;
	boolean aberta;
	float dimensaoX;
	float dimensaoY;
	float dimensaoZ;
	
	void abre() {
		this.aberta = true;
		
	}
	
	void fecha() {
		this.aberta = false;
	}
	
	void pinta(String s) {
		this.cor = s;
	}

	boolean estaAberta() {
		if (this.aberta == true) {
			System.out.println("Porta aberta.");
			return true;
		} else {
			System.out.println("Porta fechada.");
			return false;
		}
	}
	
	void mostra() {
		System.out.println("Largura da porta: " + this.dimensaoX + "m");
		System.out.println("Altura da porta: " + this.dimensaoY + "m");
		System.out.println("Espessura da porta: " + this.dimensaoZ + "m");
		System.out.println("Cor da porta: " + this.cor);
		System.out.println(estaAberta());
	}
}
----------------------------------Main-------------------------------------------------------
package fixando_conhecimento_414_pag60;

public class TestePorta {

	public static void main(String[] args) {
		
		Porta portaFrente = new Porta();
		
		portaFrente.abre();
		portaFrente.dimensaoX = 1f;
		portaFrente.dimensaoY = 2.10f;
		portaFrente.dimensaoZ = .2f;
		portaFrente.pinta("Marrom");
		
		portaFrente.mostra();
	}
}

6 Respostas

vhmolinar

uai
muda seu método que verifica se esta aberta

String estaAberta() { 
 if(this.aberta)
    return "Porta Aberta";
 else
    return "Porta Fechada";
}

que aí vai rolar como você deseja

augustocolom
diegohsi:
Pessoal, estou com uma dúvida muito simples, minha operação boolean estaAberta() {} verifica se a porta esta aberta ou nao dai quando imprimo na classe TestePorta aparece o retorno true/false. Gostaria de saber se estou fazendo algo errado e como devo proceder para não apresentar o valor booleano no main(). A minha operação deve ser boolean e não void.
package fixando_conhecimento_414_pag60;

public class Porta {
	String cor;
	boolean aberta;
	float dimensaoX;
	float dimensaoY;
	float dimensaoZ;
	
	void abre() {
		this.aberta = true;
		
	}
	
	void fecha() {
		this.aberta = false;
	}
	
	void pinta(String s) {
		this.cor = s;
	}

	boolean estaAberta() {
		if (this.aberta == true) {
			System.out.println("Porta aberta.");
			return true;
		} else {
			System.out.println("Porta fechada.");
			return false;
		}
	}
	
	void mostra() {
		System.out.println("Largura da porta: " + this.dimensaoX + "m");
		System.out.println("Altura da porta: " + this.dimensaoY + "m");
		System.out.println("Espessura da porta: " + this.dimensaoZ + "m");
		System.out.println("Cor da porta: " + this.cor);
		System.out.println(estaAberta());
	}
}
----------------------------------Main-------------------------------------------------------
package fixando_conhecimento_414_pag60;

public class TestePorta {

	public static void main(String[] args) {
		
		Porta portaFrente = new Porta();
		
		portaFrente.abre();
		portaFrente.dimensaoX = 1f;
		portaFrente.dimensaoY = 2.10f;
		portaFrente.dimensaoZ = .2f;
		portaFrente.pinta("Marrom");
		
		portaFrente.mostra();
	}
}

E aí Diego,

realmente, se o seu método for do tipo Boolean, ele irá retornar true/false. Existem várias formas de resolver seu problema, uma delas é implementar o método estaAberta(); como sendo do tipo String.
String estaAberta() {
		if (this.aberta == true) {
			System.out.println("Porta aberta.");
			return "Aberta";
		} else {
			System.out.println("Porta fechada.");
			return "Fechada";
		}
	}

Bom, mas por boas práticas eu deixaria esse método assim

public String getSituacao() {
		if (this.aberta == true) {
			this.situacao =  "Aberta";
		} else {
			System.out.println("Porta fechada.");
			this.situacao =  "Fechada";
		}
               return this.situacao;

	}

Daí quando você quiser saber a situação da porta já sabe né, só dá um System.out.Println("getSituacao()");

diegohsi

Certo Augusto, sei que utilizar metodos public get e set são de boas praticas, estou seguindo a apostila da caelum e estou fazendo os exercicios, mais vcs me sanaram a dúvida que era se havia alguma forma de retornar apenas o SysOut. Obrigado vlw

augustocolom

Hum, que bom que conhece… então entra como mais uma forma para resolver o exercício.

D

O “sysout” é apenas para saída de dados em um stream - tipicamente o console -, e retorna um PrintStream. Recomendo utilizar uma expressão ternária mesmo para modificar uma string de “aberta” para “fechada”, se entendi bem o seu problema.

Ex: ( estaAberta() ? “Aberta” : “Fechada” );

[]'s

diegohsi

Obrigado pessoal, entendi agora.

Criado 8 de junho de 2010
Ultima resposta 9 de jun. de 2010
Respostas 6
Participantes 4