Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Sistema de Compras

Classe CartaoDeCredito:

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

    public CartaoDeCredito(double limite){
        this.limite = limite;
        this.saldo = limite;
    }

    public boolean lancaCompra(Compra compra){
        if(this.saldo >= compra.getValor()){
            this.saldo -= compra.getValor();
            return true;
        }

        return false;
    }

    public double getSaldo() {
        return saldo;
    }
}

Classe Compra:

import java.util.*;

public class Compra {
    private String descricao;
    private double valor;
    private static List<Map<String, Double>> compras = new ArrayList<>();

    public void comprei(){
        Map<String, Double> map = new LinkedHashMap<>();
        map.put(descricao, valor);
        compras.add(map);
        compras.sort(Comparator.comparingDouble(m -> m.values().iterator().next()));
    }
    public static void totalCompra(){
        compras.forEach(map -> map.forEach((k, v) ->System.out.println(k + " - " + v)));
    }

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

    public double getValor() {
        return valor;
    }
}

Classe Principal:

import java.util.Scanner;

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

        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o limite do cartão: ");
        double limite = leitura.nextDouble();
        CartaoDeCredito cartao = new CartaoDeCredito(limite);

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

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

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

            if (compraRealizada) {
                compra.comprei();
                System.out.println("Compra realizada!");
                System.out.println("Digite 0 para sair ou 1 para continuar");
                sair = leitura.nextInt();
            } else {
                System.out.println("Saldo insuficiente!");
                sair = 0;
            }
        }

        System.out.println("***********************");
        System.out.println("COMPRAS REALIZADAS:\n");

        Compra.totalCompra();

        System.out.println("\n***********************");

        System.out.println("\nSaldo do cartão: " +cartao.getSaldo());

    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Oi, Vinicius! Como vai?

Gostei de como você estruturou as classes CartaoDeCredito e Compra, usando listas e mapas para organizar os dados das compras e mantendo a lógica de saldo bem clara. A ordenação das compras pelo valor é um detalhe interessante que demonstra cuidado com a organização da informação.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!