Variável em um método

10 respostas
rijava

Bom dia galera, blz?
sou novo aqui no GUJ então me desculpem caso estiver fazendo besteira, agradeço desde já a atenção.

seguite.
eu tenho uma classe
e dentro dela 3 metodos. o meu objetivo eh descobrir se a porta está aberta ou nao.
entao eu gostaria de pegar o valor de um void ‘abre’ e usar esse valor no metodo estaAberto para fins de comparaçao.
eu tentei dessa maneira mas nao deu certo, nao consegui usar o valor da variavel no outro método.
exexplo:

classe Porta

{

boolean aberta;

String cor;

boolean x;
void abre()

{

x = true;

}
void fecha()

{

x = false

}
void estaAberta()

{

if ( x==true){

System.out.println(Está aberta);

}

else

System.out.println(Está aberta);

}

}

ps: estou começando desculpem a ignorancia.

10 Respostas

erico_kl

você está mostrando a mesma mensagem para os 2 casos…

if ( x==true){ System.out.println("Está aberta"); } else System.out.println("Está aberta");
ou seja… estando o x true ou false a mensagem mostrará “Está Aberta”

Felipe_Gomes

Existem alguns erros no código. Tente usar da seguinte forma:

public class Porta { 

	boolean x; 

	void abre(boolean x) { 
		this.x = x;
	} 

	void fecha(boolean x) { 
		this.x = x; 
	} 

	void estaAberta() {
		if (x==true){
			System.out.println("Está aberta");
		}else 
			System.out.println("Está fechada"); 
	} 
}
Chame os métodos da classe anterior da seguinte forma:
public class AplicPorta {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Porta p = new Porta();
		p.abre(false);
		p.estaAberta();
	}

}
erico_kl
Felipe Gomes:
Existem alguns erros no código. Tente usar da seguinte forma:
public class Porta { 

	boolean x; 

	void abre(boolean x) { 
		this.x = x;
	} 

	void fecha(boolean x) { 
		this.x = x; 
	} 

	void estaAberta() {
		if (x==true){
			System.out.println("Está aberta");
		}else 
			System.out.println("Está fechada"); 
	} 
}
Chame os métodos da classe anterior da seguinte forma:
public class AplicPorta {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Porta p = new Porta();
		p.abre(false);
		p.estaAberta();
	}

}
assim teriam 2 métodos (fecha e abre) fazendo a mesma coisa.. então coloque apenas 1 método que faça isso.. ex:
void realizaOperacao (boolean x) {
  this.x = x;
}
Felipe_Gomes

erico_kl:
assim teriam 2 métodos (fecha e abre) fazendo a mesma coisa…
então coloque apenas 1 método que faça isso…
ex:

void realizaOperacao (boolean x) { this.x = x; }

Com os dois métodos existe a possibilidade de implementação individual. Um método para estabelecer uma conexão, outro para encerrá-la. Por isso concordei com os dois métodos.

Apesar de entender que na situação atual um método está igual ao outro, sendo portanto um deles desnecessário, como você bem sugeriu Érico.

B

Deixe com dois métodos mesmo, abrir e fechar. Deixa o código melhor organizado e mais fácil de entender. Só não precisa passar um booleano pra eles.

rijava

Opa, valeu galera.
usei a solução do amigo ai de cima
Obrigado pessoal. :lol:

class Porta
{

boolean resultado;

void abre(boolean y)
       {
       this.resultado = y;
       }
    void fecha(boolean y)
        {
          this.resultado = y;
        }

void estaAberta()
{

if(resultado==true)
               {
                   System.out.println("Porta está aberta.");
               }else
                    System.out.println("Porta está fechada");
        }
}

porta.abre(false)

porta.estaAberta();
pmlm

Mas o abre e o fecha não precisam de receber qualquer parâmetro

class Porta
{
      boolean resultado; //assumimos que true = aberta e false = fechada.

      void abre() //Não precisas passar nenhum parâmetro, se vais pedir para abrir, é para ficar a true
     {
           this.resultado = true;
     }

      void fecha() //Não precisas passar nenhum parâmetro, se vais pedir para fechar, é para ficar a false
      {
             this.resultado = false;
       }

      void estaAberta()
      {

              if(resultado==true)  // aqui poderias por simplesmente if (resultado)
             {
                   System.out.println("Porta está aberta.");
              }else
                  System.out.println("Porta está fechada");
             }
     }
}
Felipe_Gomes

pmlm:
Mas o abre e o fecha não precisam de receber qualquer parâmetro

class Porta
{
      boolean resultado; //assumimos que true = aberta e false = fechada.

      void abre() //Não precisas passar nenhum parâmetro, se vais pedir para abrir, é para ficar a true
     {
           this.resultado = true;
     }

      void fecha() //Não precisas passar nenhum parâmetro, se vais pedir para fechar, é para ficar a false
      {
             this.resultado = false;
       }

      void estaAberta()
      {

              if(resultado==true)  // aqui poderias por simplesmente if (resultado)
             {
                   System.out.println("Porta está aberta.");
              }else
                  System.out.println("Porta está fechada");
             }
     }
}


Muito bom. Lógica aperfeiçoada.

Giulliano
class Porta
{
      boolean situacaoPorta; 

      void abraOuFeche()      {
           this.situacaoPorta = !situacaoPorta;
     }

      void estaAberta() {
              if(situacaoPorta==true)  {
                   System.out.println("Porta está aberta.");
              }else{
                  System.out.println("Porta está fechada");
             }
     }
}

só pra variar…rs

M

Só lembrando que como a variável é booleana não é preciso comparar explicitamente com true no if. Ou seja, isso:

if (variavel == true)

Poderia ser simplesmente:

if (variavel)
Criado 5 de março de 2010
Ultima resposta 5 de mar. de 2010
Respostas 10
Participantes 7