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

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.

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

}[/code]
----------------------------------Main-------------------------------------------------------

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

}[/code]

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

[quote=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.

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

}[/code]
----------------------------------Main-------------------------------------------------------

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

}[/code][/quote]

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

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

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

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

Obrigado pessoal, entendi agora.