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

[Sugestão] Menu de Compras. Segue minha versão

package desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.modelos;

import java.util.ArrayList;
import java.util.List;

public class CartaoDeCredito {
    private double saldo;

    public CartaoDeCredito(double limite) {
        this.saldo = limite;
        List<Compra> compras = new ArrayList<>();
    }

    public double getSaldo() {
        return saldo;
    }

    public boolean lancaCompra(Compra compra) {
        if(this.saldo >= compra.precoProduto()) {
            this.saldo -= compra.precoProduto();
            return true;
        }
        return false;
    }
}
package desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.modelos;

import java.text.NumberFormat;
import java.util.Locale;

public record Compra(String nomeProduto, double precoProduto) implements Comparable<Compra> {

    @Override
    public String toString() {
        Locale localBrasil = new Locale("pt", "BR");
        return "Compra: descricao= " + nomeProduto +
                ", valor = " + NumberFormat.getCurrencyInstance(localBrasil).format(precoProduto);
    }

    @Override
    public int compareTo(Compra outraCompra) {
        return Double.compare(this.precoProduto, outraCompra.precoProduto);
    }
}
package desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.Principal;

import desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.modelos.CartaoDeCredito;
import desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.modelos.Compra;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Locale;
import java.util.Scanner;

public class Principal {

    static ArrayList<Compra> listaCompras = new ArrayList<>();

    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        int opcaoMenu = 0;
        String menuPrincipal = """
                ******* ESCOLHA UMA OPÇÃO *******
                1- Efetuar Compra
                2- Consultar Compras
                3- Consultar Limite do Cartão
                9 - Sair
                """;

        System.out.println("Informe o limite do cartão");
        CartaoDeCredito cartao = new CartaoDeCredito(leitura.nextDouble());

        while (opcaoMenu != 9) {
            System.out.println(menuPrincipal);
            opcaoMenu = leitura.nextInt();
            switch (opcaoMenu) {
                case 1:
                    String opcao = "s";
                    while (opcao.equalsIgnoreCase("s")){
                        System.out.println("Digite o nome do produto");
                        String nome = leitura.next();
                        System.out.println("Digite o preço do produto");
                        double preco = leitura.nextDouble();
                        Compra compra = new Compra(nome, preco);
                        if (cartao.lancaCompra(compra)){
                            listaCompras.add(compra);
                            System.out.println("Deseja lançar mais algum produto? (S/N)");
                            opcao = leitura.next();
                        } else {
                            System.out.println("Saldo Insuficiente");
                            listarCompras();
                            System.out.println("Seu saldo disponível é: " + cartao.getSaldo());
                            break;
                        }
                    }
                    break;
                case 2:
                    listarCompras();
                    break;
                case 3:
                    Locale localBrasil = new Locale("pt", "BR");
                    System.out.println("Limite do Cartão Disponível: " +  NumberFormat.getCurrencyInstance(localBrasil).format(cartao.getSaldo()));
                default:
                    break;
            }
        }
    }

    private static void listarCompras() {
        System.out.println("*****************************");
        System.out.println("Suas compras");
        Collections.sort(listaCompras);
        for(Compra c : listaCompras){
            System.out.println(c.getNomeProduto() + " - " + c.getPrecoProduto());
        }
    }
}
1 resposta
solução!

Oi Marcus! Tudo bem?

Muito bom o seu projeto final, obrigada por compartilhar aqui no fórum! Espero que continue assistindo os cursos e praticando Java com a gente :)

Qualquer dúvida, fique à vontade para enviar aqui.

Abraços e bons estudos!