1
resposta

Solução desafio

package DesafioCartaoDeCompras;

import java.util.*;

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

        Scanner scan = new Scanner(System.in);

        List<CartaoDeCredito> listaProdutos = new LinkedList<>();

        System.out.println("Digite o limite do cartão: ");
        int limite = scan.nextInt();
        scan.nextLine(); // corrige o buffer 

        int saldo = limite;
        int sair = 1;

        while (sair != 0) {
            System.out.println("Produto: ");
            String nomeProduto = scan.nextLine();

            System.out.println("Valor do produto: ");
            int valorProduto = scan.nextInt();
            scan.nextLine(); // corrige o buffer 

            if (valorProduto > saldo) {
                System.out.println("Limite indisponível para a compra!");

            } else {
                saldo -= valorProduto;
                System.out.println("Produto comprado! Limite disponivel: " + saldo);
                listaProdutos.add(new CartaoDeCredito(nomeProduto, valorProduto));
            }

            System.out.println("(1) Para comprar | (0) Para sair");
            sair = scan.nextInt();
            scan.nextLine();  // corrige buffer para leitura no próximo loop
        }

        listaProdutos.sort(Comparator.comparing(CartaoDeCredito::getValorProduto)); // ordena pelo valor das compras
        System.out.println("**********************************");
        System.out.println("COMPRAS REALIZADAS:\n");
        for (CartaoDeCredito lista : listaProdutos) {
            System.out.println(lista);
        }
        System.out.println("\n**********************************");
        System.out.println("Saldo final do cartão: " + saldo);
    }

}
package DesafioCartaoDeCompras;

public class CartaoDeCredito {
    private int limite;
    private String nomeProduto;
    private int valorProduto;

    public CartaoDeCredito(String nomeProdutoproduto, int valorProduto) {
        this.nomeProduto = nomeProdutoproduto;
        this.valorProduto = valorProduto;
    }

    public int getValorProduto() {
        return valorProduto;
    }

    @Override
    public String toString() {
        return "Produto: " + nomeProduto + "(R$ " + valorProduto + ")";
    }
}
1 resposta

Oi, Diego! Como vai?

Quero te dar os parabéns, porque sua solução ficou muito bem estruturada e funcional. Você organizou muito bem a lógica de controle do saldo, fez o tratamento do buffer do Scanner corretamente e ainda adicionou a ordenação das compras pelo valor, o que é uma excelente prática para melhorar a visualização dos dados.

Você está no caminho certo, praticando conceitos essenciais de orientação a objetos, coleções e controle de fluxo. Continue assim!

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