1
resposta

Projeto final do desafio

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

    public Compra(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 descricao + " - R$ " + String.format("%.2f", valor);
    }
}
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("Digite o limite do seu cartão de crédito: ");
        Scanner sc = new Scanner(System.in);
        double limite = sc.nextDouble();

        List<Compra> compras = new ArrayList<>();
        int opcao = 1;

        while (opcao == 1 && limite > 0) {

            System.out.println("Digite o nome da compra: ");
            Scanner sc2 = new Scanner(System.in);
            String desc = sc2.next();

            System.out.println("Digite o custo da compra: ");
            Scanner sc3 = new Scanner(System.in);
            double custo = sc3.nextDouble();

            if (custo <= limite) {
                compras.add(new Compra(desc, custo));
                limite -= custo;
                System.out.println("Compra realizada com sucesso!");
                System.out.printf("Limite restante: R$ %.2f%n", limite);
            } else {
                System.out.println("Compra negada! Limite insuficiente!");
            }

            if (limite > 0) {
                System.out.println("\nDigite 0 para sair ou 1 para continuar as compras: ");
                opcao = sc.nextInt();
                sc.nextLine();
            } else {
                System.out.println("\nLimite do cartão esgotado!");
            }
        }

        compras.sort(Comparator.comparingDouble(Compra::getValor));
        System.out.println("\nCompras realizadas:");
        for (Compra compra : compras) {
            System.out.println(compra);
        }
    }
}
1 resposta

Oi, Luan! Como vai?

Agradeço por compartilhar. Gostei da organização do projeto, Importante destacar o uso correto de List, ArrayList e Comparator para ordenar as compras, além da lógica clara de controle do limite do cartão, que mostra um bom entendimento da proposta do desafio.

Continue explorando esse tipo de solução, pois ela conecta bem lógica, classes e coleções.

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