[RESOLVIDO] Exercicio FJ-11 4.14 - PARTE 3

6 respostas
M3g4d3th

Galera to aqui conseguindo quase 100% do exercicio e fiquei preso em uma parte.

Vejam só.

public class Porta {

    boolean aberta;
    String cor;

    void abre() {
        aberta = true;
    }

    void fecha() {
        aberta = false;
    }

    void pinta(String s) {
        this.cor = s;
    }

    void texto() {
         System.out.println("Porta de Cor: " + this.cor);
        
    }

    void estaAberta() {
        
        
        if (aberta == true) {
            System.out.println("Esta aberta!");
        } else  {
            System.out.println("Esta fechada!");
        }
        
    }
}

Até ai beleza, então o código pra rodar.

public class TesteCasa {

    public static void main(String[] args) {

        Casa novaCasa = new Casa();
        novaCasa.cores("Branca");
        novaCasa.textoCasa();

        Porta porta1 = new Porta();
        porta1.pinta("Preto");
        porta1.texto();
        porta1.abre();
        porta1.estaAberta();

        Porta porta2 = new Porta();
        porta2.pinta("Azul");
        porta2.texto();
        porta2.fecha();
        porta2.estaAberta();

        Porta porta3 = new Porta();
        porta3.pinta("Vermelho");
        porta3.texto();
        porta3.fecha();
        porta3.estaAberta();
        
        

    }
}

Ai também ta beleza, ai vem o final do problema.

3) Utilize o metodo quantasPortasEstaoAbertas para imprimir o número de portas abertas.

Rs, juro que estou embananado.

Alguem pode ajudar?

Abraço

6 Respostas

evertonsilvagomesjav

Se eu entendi o que vc quer vc pode criar um list e add as abertas:

static List<Boolean> lista = new ArrayList<Boolean>();

void abre() {   
        aberta = true; 
        lista.add(aberta);
    }

void fecha(){

aberta = false;
lista.remove(lista.size()-1);

}   

int quantasPortasEstaoAbertas(){

return lista.size() -1;

}

obs: fiz o cod aqui no Guj se estiver errado alguem ai corrija =D

Gerson_da_S_Lima

vocë também pode utilizar uma variável estática para contar o número de portas abertas

public class Porta {

	public static int portasAbertas = 0;
	
    boolean aberta;
    String cor;

    void abre() {
        aberta = true;
        portasAbertas++;
    }

    void fecha() {
        aberta = false;
    }

    void pinta(String s) {
        this.cor = s;
    }

    void texto() {
         System.out.println("Porta de Cor: " + this.cor);
        
    }

    void estaAberta() {        
        
        if (aberta == true) {
            System.out.println("Esta aberta!");
        } else  {
            System.out.println("Esta fechada!");
        }
        
    }
    
    int quantasPortasEstaoAbertas() {
    	return portasAbertas;
    }
}

public class TesteCasa {

    public static void main(String[] args) {

        Porta porta1 = new Porta();
        porta1.pinta("Preto");
        porta1.texto();
        porta1.abre();
        porta1.estaAberta();

        Porta porta2 = new Porta();
        porta2.pinta("Azul");
        porta2.texto();
        porta2.fecha();
        porta2.estaAberta();

        Porta porta3 = new Porta();
        porta3.pinta("Vermelho");
        porta3.texto();
        porta3.fecha();
        porta3.estaAberta();
        
        System.out.println(porta3.quantasPortasEstaoAbertas());
        
    }
}
L

dica:

não é necessário:

if (aberta == true) {

faça somente:

if (aberta) {

aberta já é um atributo booleano!

pmlm
Gerson da S. Lima:
vocë também pode utilizar uma variável estática para contar o número de portas abertas
void abre() {
        aberta = true;
        portasAbertas++;
    }

    void fecha() {
        aberta = false;
    }
Convém actualizar também quando fecha a porta :-)
void fecha() {
        aberta = false;
        portasAbertas--;
    }
Além de que neste momento nada impede que se tente abrir uma porta já aberta.
void abre() {
        if (aberta){
             System.out.println("Não pode abrir uma porta já aberta!");  
        } else {
              aberta = true;
              portasAbertas++;
        }
    }

    void fecha() {
        if (aberta){
             aberta = false;
              portasAbertas--;
        } else {
               System.out.println("Não pode fechar uma porta já fechada!");  
        }
    }
M3g4d3th

Ae grato pelo auxilio de todos, claro, faz total sentido.

Gostei muito do exemplo simples do Gerson, funcionou corretamente.

E pmlm, valeu pela dica, com certeza um dia eu vou precisar usar isso.

Abraço e grato a todos que ajudaram.

M

Oi pessoal, alguem poderia colocar o método estaAberto em boolean para que eu possa ver como ficaria? Eu tb estou resolvendo esse exercicio e fiz do msm jeito que está no enunciado, porém a apostila pede para que crie o método estaAberta como boolean.

Criado 9 de março de 2010
Ultima resposta 3 de out. de 2010
Respostas 6
Participantes 6