[ RESOLVIDO] Como faço para usar um metodo void dentro de um metodo boolean?

Galera estou tentando fazer um metodo boolean para retorna true se o usuario chamou o metodo void abre , ai esta o codigo :

[code]class Porta
{
boolean aberta = false;
String cor = “”;
double dimensaoy = 0.0,dimensaox = 0.0,dimensaoz = 0.0;

void Abre(){
System.out.println(" PORTA ABERTA!");}

void Fecha(){
System.out.println("PORTA FECHADA!");}

void Pinta(String s){
 this.cor = s;
 System.out.println("COR DA PORTA:" + this.cor);}

boolean EstaAberta(){
	boolean x = this.Abre(); // metodo boolean não aceita essa metodo void ;
	if ( x == false)
	{ this.aberta = false;
	}
	else
		this.aberta = true;

return this.aberta ;

}

}[/code]

Dei uma arrumada no teu codigo.
Acho que isso resolve:

	public class Porta {
		private boolean aberta = false;
		private String cor = "";
		private double dimensaoy = 0.0, dimensaox = 0.0, dimensaoz = 0.0;

		public boolean Abre() {
			System.out.println(" PORTA ABERTA!");
			boolean retorno = true;
			return retorno; 
		}

		public void Fecha() {
			System.out.println("PORTA FECHADA!");
		}

		public void Pinta(String s) {
			this.cor = s;
			System.out.println("COR DA PORTA:" + this.cor);
		}

		public boolean EstaAberta() {
			boolean x = this.Abre(); // metodo boolean não aceita essa metodo void ;
			if(x == false) {
				this.aberta = false;
			} else
				this.aberta = true;

			return this.aberta;

		}
	}

Boa tarde.

Mas é claro que não aceita. Métodos void não retornam valores, como você espera armazenar um valor booleano atribuindo a eles um método void.

Aliás acho que esta sua lógica está um pouco complicada não, atribuir os valores booleanos no atributo booleano aberta, exatamente nos métodos void abre() e fecha(), e usar o método booleano estaAberta() somente para saber se ele está aberto ou não retornando apenas o conteúdo de atributo aberta, assim:

   class Porta  {  
       boolean aberta = false;  
       String cor = "";  
       double dimensaoy = 0.0,dimensaox = 0.0,dimensaoz = 0.0;

       void abre() {
           this.aberta = true;
           pinta("Verde");
           System.out.println("PORTA ABERTA!");
       }

       void fecha(){
           this.aberta = false;
            pinta("Vermelho");  
           System.out.println("PORTA FECHADA!");
       }

       void pinta(String s){  
           this.cor = s;
           System.out.println("COR DA PORTA:" + this.cor);  
       }

       boolean estaAberta(){  
          return aberta
       }  
}

Ficou bem melhor não :?: 8)

Certo , então eu não posso chamar um metodo void dentro de um metodo boolean?

Claro que pode, só não pode esperar que ele te retorne alguma coisa.

vlw Discorpio , eu entendi agora ! :slight_smile:

Olá, sou eu de novo.

Você pode invocar um método void dentro de um método booleano e até dentro de outro método void, porém não pode atribuir valores de atributos de qualquer tipo com métodos void.

Se você tem um atributo booleano e quer atribuir o seu valor através de um método, este método tem que retornar booleano, se o atributo for String, então o método tem que retornar um valor String, atributo do tipo inteiro só recebe valores de métodos que retornam inteiros, e assim sucessivamente.

Entendeu. :?:

Entendi :slight_smile: