1
resposta

Minha solução para o desafio final

Olá, gostaria de compartilhar minha solução proposta para o desafio apresentado no final do curso. Qualquer feedback é super bem-vindo!

public class Cartao {
    private double limite;

    public Cartao(double limite) {
        this.limite = limite;
    }

    public double calculaLimite(Compra compra) {
        if (compra.getValor() < this.limite) {
            return limite -= compra.getValor();
        } else {
            return 0;
        }
    }

    @Override
    public String toString() {
        return "Saldo do cartão: " + this.limite;
    }
}
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 double getValor() {
        return valor;
    }

    @Override
    public String toString() {
        return descricao + ": " + valor;
    }

    @Override
    public int compareTo(Compra compra) {
        return Double.compare(this.valor, compra.valor);
    }

}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Principal {
    public static void main(String[] args) {
        int opcao;

        ArrayList<Compra> compras = new ArrayList<>();

        System.out.println("Digite o limite do cartão: ");
        Scanner sc = new Scanner(System.in);

        Cartao cartao = new Cartao(sc.nextInt());

        do {

            System.out.println("Digite a descrição da compra: ");
            String descricao = sc.next();

            System.out.println("Digite o valor do compra: ");
            double valor = sc.nextDouble();

            Compra compra = new Compra(descricao, valor);

            if (cartao.calculaLimite(compra) == 0) {
                System.out.println("Saldo insuficiente!");
                break;
            }

            compras.add(compra);
            System.out.println("Compra realizada!");
            System.out.println("Digite 0 para sair ou 1 para continuar: ");
            opcao = sc.nextInt();

        } while (opcao != 0);

        System.out.println("COMPRAS REALIZADAS: ");
        Collections.sort(compras);
        for (Compra item : compras) {
            System.out.println(item);
        }
        System.out.println(cartao);
    }
}
1 resposta

Oi, dev! Tudo bem?

Ótimo código! Espero que continue a explorar os conteúdos para ampliar seu conhecimento e desenvolver novas habilidades. Caso tenha restado alguma dúvida em relação a qualquer conteúdo do curso ou atividade, não hesite em perguntar, estou disponível e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!