Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Imprimir lista de lances

Entendi como foi realizado o teste, mas tenho uma dúvida: como faço para imprimir a lista de lances?

Tentei imprimir com o sysout abaixo mas o retorno foi uma lista de objetos(endereços).

System.out.println(leilao.getLances());

Resultado:
[br.com.caelum.leilao.dominio.Lance@5ef04b5, br.com.caelum.leilao.dominio.Lance@5f4da5c3, br.com.caelum.leilao.dominio.Lance@443b7951, br.com.caelum.leilao.dominio.Lance@14514713]


Abaixo todas as classes.

public class Lance {

    private Usuario usuario;
    private double valor;

    public Lance(Usuario usuario, double valor) {
        this.usuario = usuario;
        this.valor = valor;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public double getValor() {
        return valor;
    }



}


public class Leilao {

    private String descricao;
    private List<Lance> lances;

    public Leilao(String descricao) {
        this.descricao = descricao;
        this.lances = new ArrayList<Lance>();
    }

    public void propoe(Lance lance) {
        lances.add(lance);
    }

    public String getDescricao() {
        return descricao;
    }

    public List<Lance> getLances() {
        return Collections.unmodifiableList(lances);
    }


}

public class Avaliador {
    private double maiorLance = Double.NEGATIVE_INFINITY;
    private double menorLance = Double.POSITIVE_INFINITY;

    public void avalia(Leilao leilao){        
        for(Lance lance : leilao.getLances()){            
            if(lance.getValor() > maiorLance) {maiorLance = lance.getValor();}
            if(lance.getValor() < menorLance) {menorLance = lance.getValor();}
        }
    }

    public double getMaiorLance(){
        return this.maiorLance;
    }


public class Usuario {

    private int id;
    private String nome;

    public Usuario(String nome) {
        this(0, nome);
    }

    public Usuario(int id, String nome) {
        this.id = id;
        this.nome = nome;
    }

    public int getId() {
        return id;
    }

    public String getNome() {
        return nome;
    }



}

public class TesteAvaliador {



    @Test
    public void teste() {        

        Leilao leilao = new Leilao("playstation 3 novo");

        Usuario joao = new Usuario("João");
        Usuario maria = new Usuario("Maria");
        Usuario jose = new Usuario("José");
        Usuario francisca = new Usuario("Francisca");

        leilao.propoe(new Lance(maria,500));
        leilao.propoe(new Lance(joao,505));
        leilao.propoe(new Lance(jose,575));
        leilao.propoe(new Lance(francisca,103.75));

        Avaliador leiloeiro = new Avaliador();
        leiloeiro.avalia(leilao);

        double maiorEsperado = 575;
        double menorEsperado = 103.75;

        Assert.assertEquals(maiorEsperado, leiloeiro.getMaiorLance(), 0.0001);
        Assert.assertEquals(menorEsperado, leiloeiro.getMenorLance(), 0.0001);

// somente para aprender mais...
        System.out.println(leilao.getLances());

    }
}
3 respostas

Por gentileza, alguém se habilita a responder minha dúvida!

solução!

Ola Rozenildo, tudo bem?

Quando voce imprime algo atraves do System.out.println, o que ele faz é chamar o metodo toString da classe (toda classe tem porque herdam de Object).

Para imprimir algo claro para voce, sobrescreva esse metodo com as informações que voce precisa.

Por exemplo:

O metodo toString da classe Lance, ficaria assim:

@Override public String toString() { return "Lance [usuario=" + usuario + ", valor=" + valor + "]"; }

Como voce pode ver, ele esta imprimindo o conteudo da variavel Usuario. Para ficar claro de quem é o lance, sobreescrava o metodo toString de Usuario tambem:

@Override public String toString() { return "Usuario [id=" + id + ", nome=" + nome + "]"; }

Esses exemplos que eu dei, são as implementações padrões que o Eclipse dá. Voce pode colocar o que achar melhor nessa String retornada.

Para utilizar a implementação padrão do eclipse va em "Source -> Generate toString".

Qualquer coisa, avisa ai. Abraço.

Obrigado, Thiago! Valeu, amigo. Funcionou. Abraço.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software