1
resposta

Minha solução para o desafio

// Fiz algumas mudanças no código de acordo com o o meu entender import java.util.ArrayList; import java.util.List;

public class CartaoDeCredito { private double limite; private double saldo; private List compras;

public double getLimite() {
    return limite;
}

public double getSaldo() {
    return saldo;
}

public List<Compra> getCompras() {
    return compras;
}

public CartaoDeCredito(double limite) {
    this.limite = limite;
    this.saldo = limite;
    this.compras = new ArrayList<>();
}

public boolean lancaCompra(Compra compra) {
    if(this.saldo >= compra.getValor()){
        this.saldo -= compra.getValor();
        this.compras.add(compra);
        System.out.println("Compra Realizada com Sucesso!!!");
        return true;
    }
    System.out.println("Saldo Insuficiente!!!");
    //System.exit(0);
    return false;
}

}

public class Compra implements Comparable<Compra> {

private String descricao;
private double valor;

public Compra(String descricao, double valor) {
    this.descricao = descricao;
    this.valor = valor;
}

public String getDescricao() {
    return descricao;
}

public double getValor() {
    return valor;
}

@Override
public String toString() {
    return "Compra: {" +
            "descricao=' " + descricao + '\'' +
            ", valor= " + valor +
            '}';
}

@Override
public int compareTo(Compra outraCompra) {
    return Double.valueOf(this.valor).compareTo(Double.valueOf(outraCompra.valor));
}

}

import java.util.Collections;

import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner leitura = new Scanner(System.in); System.out.println("Digite limite do seu cartão: "); double limite = leitura.nextDouble(); CartaoDeCredito cartao = new CartaoDeCredito(limite);

    int sair = 1;
    while (sair != 0){
        System.out.println("Digite descrição da compra: ");
        String descrcao = leitura.next();

        System.out.println("Digite valor da compra: ");;
        double valor = leitura.nextDouble();

        Compra compra = new Compra(descrcao, valor);
        boolean compraRealizada = cartao.lancaCompra(compra);

        if (compraRealizada) {
            //System.out.println("Compra realizada com sucesso");
            System.out.println("Digite 0 pra sair ou 1 pra continuar");
            sair = leitura.nextInt();
        } else{
            //System.out.println("Saldo Insuficiente");
            sair = 0;
         }
    }

    System.out.println( "*************************");
    System.out.println( "Histrorico de Compras");

    Collections.sort(cartao.getCompras());
    for (Compra c : cartao.getCompras()) {
        System.out.println(c.getDescricao() + " - " + c.getValor());
    }
    System.out.println( "*************************");

    System.out.println("Saldo em Cartão: " + cartao.getSaldo());


}

}

1 resposta

Bom dia, Paulo! Tudo bem?

Você fez um ótimo trabalho resolvendo o desafio! Seu código está correto, então te parabenizo pelo seu esforço e dedicação!

A título de informação, quando precisar compartilhar códigos aqui no fórum é interessante dar uma boa visibilidade para ele. Para isso, você pode seguir os passos que compartilho a seguir. Sem a formatação correta, o código acaba ficando escondido e de difícil visualização.

OBS: no seu caso, algumas partes do código ficaram formatadas devido à endentação do código, mas atrapalha um pouco na visualização do código.

  1. Selecione o trecho com o código no seu post;

  2. Aqui no fórum, procure o ícone </>. É a sétima opção na aba superior do nosso editor de texto;

  3. Clique no ícone comentado acima, certificando-se que está com todo o trecho de código selecionado.

Para confirmar se está tudo certo, você pode pré-visualizar seu post clicando no penúltimo ícone da esquerda para a direita, ou também usando o atalho F9.

No mais, se precisar de ajuda ou tiver alguma dúvida relacionada aos seus estudos, o fórum é o melhor lugar para te ajudar.

Bons estudos!