package br.com.xandyxdev.principal;
import br.com.xandyxdev.modelos.Card;
import br.com.xandyxdev.modelos.Produtos;
import java.util.*;
public class Principal {
    public static void main(String[] args) {
        Scanner leitor = new Scanner(System.in);
        System.out.println("Digite o limite do cartão: ");
        Card card = new Card(leitor.nextDouble());
        int saidaEntrada = 1;
        List<Produtos> produtos1 = new LinkedList<>();
        while (saidaEntrada != 0 && saidaEntrada == 1) {
            System.out.println("Digite o nome do produto: ");
            String itemComprado = leitor.nextLine();
            System.out.println("Digite o valor do produto: ");
            double valorItem = leitor.nextDouble();
            Produtos produto = new Produtos(itemComprado, valorItem);
            card.realizarCompra(valorItem, produto, produtos1);
            System.out.println("\nSe deseja realizar outra compra digite 1 se deseja sair digite 0");
            saidaEntrada = leitor.nextInt();
        }
        if (produtos1.size() == 0) {
            System.out.println("Nenhuma compra realizada!");
        } else {
            System.out.println("*****************");
            System.out.println("COMPRAS REALIZADAS\n");
            Collections.sort(produtos1, Comparator.comparingDouble(Produtos::getValorProduto));
            for (Produtos produto : produtos1) {
                System.out.println(produto.getNomeProduto() + " - R$" + produto.getValorProduto());
            }
            System.out.println("\n*****************");
            System.out.println("\nSaldo disponivel: R$" + card.getLimiteCartao());
        }
    }
}
package br.com.xandyxdev.modelos;
import java.util.List;
public class Card {
    private double limiteCartao;
    public Card(double limiteCartao) {
        this.limiteCartao = limiteCartao;
    }
    public double getLimiteCartao() {
        return limiteCartao;
    }
    public boolean realizarCompra(double valorItem, Produtos item, List lista) {
        if (valorItem > this.limiteCartao) {
            System.out.println("Saldo insuficiente\n");
            System.out.println("Saldo disponivel : R$" + limiteCartao);
            return false;
        } else {
            lista.add(item);
            this.limiteCartao -= valorItem;
            return true;
        }
    }
}
package br.com.xandyxdev.modelos;
public class Produtos {
    private String nomeProduto;
    private double valorProduto;
    public Produtos(String nomeProduto, double valorProduto) {
        this.nomeProduto = nomeProduto;
        this.valorProduto = valorProduto;
    }
    public String getNomeProduto() {
        return nomeProduto;
    }
    public double getValorProduto() {
        return valorProduto;
    }
}