0
respostas

Desafio: Aplicação de Compras

Compra

public class Compra implements Comparable{
    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 "Item Comprado: " + descricao + ", Valor: R$" + valor;
    }

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

CartaoCredito

import java.util.List;

public class CartaoCredito {
    private double limite;
    private double saldo;
    private List<Compra> compras;

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

    public boolean realizarCompra(Compra compra) {
        if (compra.getValor() <= this.saldo) {
            compras.add(compra);
            this.saldo -= compra.getValor();
            return true;
        }
        return false;
    }

    public double getSaldo() {
        return saldo;
    }

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

Main

import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        System.out.println("Sistema de Cartão de Crédito");
        System.out.println("Digite o Saldo Inicial do Cartão:");
        java.util.Scanner scanner = new java.util.Scanner(System.in);
        double limite = scanner.nextDouble();
        CartaoCredito cartao = new CartaoCredito(limite);

        int sair = 1;
        while (sair != 0) {
            System.out.println("Descrição da Compra:");
            scanner.nextLine();
            String descricao = scanner.nextLine();

            System.out.println("Insira o Valor da Compra:");
            double valor = scanner.nextDouble();
            Compra compra = new Compra(descricao, valor);

            List<Compra> comprasRealizadas = cartao.getCompras();

            if (compra.getValor() <= cartao.getSaldo()) {
                cartao.realizarCompra(compra);
                System.out.println("Compra realizada com sucesso! " + "Saldo Atual: R$" + cartao.getSaldo());
            } else if (compra.getValor() > cartao.getSaldo()) {
                System.out.println("Saldo insuficiente para realizar a Compra! Tente um valor menor.");
                System.out.println("Saldo Atual: R$" + cartao.getSaldo());
            } else {
                System.out.println("Valor inválido para a Compra!");
            }

            if (cartao.getSaldo() <= 0) {
                System.out.println("Saldo do Cartão esgotado! Encerrando o sistema.");
                sair = 0;
                System.out.println("Compras Realizadas:");
                Collections.sort(cartao.getCompras());
                for (Compra c : comprasRealizadas) {
                    System.out.println(c);
                }
                System.out.println("Saldo Final do Cartão: R$" + cartao.getSaldo());
                System.out.println("Obrigado por usar o Sistema de Cartão de Crédito!");
            } else {
                System.out.println("Deseja Continuar Comprando? (S/N)");
                String resposta = scanner.next();
                if (resposta.equalsIgnoreCase("S")) {
                    sair = 1;
                } else {
                    sair = 0;
                    System.out.println("Compras Realizadas:");
                    Collections.sort(cartao.getCompras());
                    for (Compra c : comprasRealizadas) {
                        System.out.println(c);
                    }
                    System.out.println("Saldo Final do Cartão: R$" + cartao.getSaldo());
                    System.out.println("Obrigado por usar o Sistema de Cartão de Crédito!");
                }
            }
        }
    }
}