0
respostas

[Projeto] Desafio resolvido

package desafio.compras;

public class CartaoCredito {
    private double limite;

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

    public double getLimite() {
        return limite;
    }

    public void realizarCompra(Item item){
        this.limite -= item.getValor();
    }
}
package desafio.compras;

public class Item {
    private String descricao;
    private double valor;

    public Item(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 """
                %s - R$%.2f""".formatted(this.getDescricao(), this.getValor());
    }
}
package desafio.compras;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Digite o limite do cartão:");
        double limite = Double.parseDouble(sc.nextLine());
        CartaoCredito cartao = new CartaoCredito(limite);

        ArrayList<Item> listaProdutos = new ArrayList<>();

        int controle = 1;
        if(cartao.getLimite() > 0){
            while (controle != 0){
                System.out.println("Digite a descrição da compra:");
                String descricao = sc.nextLine();

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

                if(cartao.getLimite() < valor){
                    System.out.println("saldo insuficiente!");
                    break;
                }

                Item item = new Item(descricao, valor);
                cartao.realizarCompra(item);
                System.out.println("Compra realizada com sucesso!");
                listaProdutos.add(item);
                System.out.println("Digite 0 para sair ou 1 pra continuar");
                controle = Integer.parseInt(sc.nextLine());
            }
        } else {
            System.out.println("Limite não iniciando corretamente, o mesmo deve ser superior a 0.");
        }

        System.out.println("""
                ***********************
                COMPRAS REALIZADAS: 
                """);
        listaProdutos.sort(Comparator.comparing(Item::getValor));
        listaProdutos.forEach(System.out::println);
        System.out.println("""
                
                ***********************
                
                Limite atual do Cartão: R$%.2f""".formatted(cartao.getLimite()));

    }
}