SóProvas


ID
2070697
Banca
FUNRIO
Órgão
IF-PA
Ano
2016
Provas
Disciplina
Programação
Assuntos

Considere o seguinte programa escrito em Java:

public class Garrafa{

int capacidade;

int volumeOcupado=0;


Garrafa(int capacidade)

{

                                    this.capacidade=capacidade;

}

boolean inserirLiquido(int qtd){

                                    if ( (capacidade-volumeOcupado)>=qtd){

                                                    volumeOcupado+=qtd;

                                                    return true;

                                                    }else return false;

}

boolean transferirLiquido(Garrafa g)

{

                                    if(this.inserirLiquido(g.volumeOcupado)) {

                                                g.volumeOcupado=0;
                                    return true;

                                    }

                                    else return false;

}

public static void main(String [] args)

{

                                    Garrafa a = new Garrafa(10);

                                    Garrafa b = new Garrafa(12);

                                    a.inserirLiquido(2);

                                    b.inserirLiquido(3);

                                    a.transferirLiquido(b);

                                    b.transferirLiquido(a);

                                    b.transferirLiquido(b);

                                    System.out.print("Volume ocupado em a:"+a.volumeOcupado+", e em b:"+b.volumeOcupado);

}

}

Ao ser executado, o programa gera o seguinte resultado na tela de comando:

Alternativas
Comentários
  • a.inserirLiquido(2); -> a=2, b=0

    b.inserirLiquido(3); -> a=2, b=3

    a.transferirLiquido(b); -> a=5, b=0

    b.transferirLiquido(a); -> a=0, b=5

    b.transferirLiquido(b); -> a=0, b=0

    .

    É um código com um bug.

    Após chamar "transferirLiquido", o volumeOcupado sempre será setado para zero, mesmo se transferir para ele mesmo.