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

Minha solução para o desafio

public class CalculaCompra{
    public boolean debita(Carrinho compra, Cliente cliente) {
        if (compra.getValorItem() <= cliente.getLimite()){
            cliente.atualizaLimite(compra.getValorItem());
            return true;
        }

        return false;
    }
}
public class Cliente {
    private String nome;
    private double limite;

    public Cliente(String nome, double limite) {
        this.nome = nome;
        this.limite = limite;
    }

    public String getNome() {
        return nome;
    }

    public double getLimite() {
        return limite;
    }

    public void atualizaLimite(double valorDebitado){
        this.limite -= valorDebitado;
    }
}
public class Carrinho extends CalculaCompra implements Comparable<Carrinho>{
    private String nomeItem;
    private double valorItem;

    public String getNomeItem() {
        return nomeItem;
    }

    public void setNomeItem(String nomeItem) {
        this.nomeItem = nomeItem;
    }

    public double getValorItem() {
        return valorItem;
    }

    public void setValorItem(double valorItem) {
        this.valorItem = valorItem;
    }

    @Override
    public String toString() {
        return "Item: " + getNomeItem() + " Valor R$ " + getValorItem();
    }

    @Override
    public int compareTo(Carrinho outraCarrinho) {
        return this.getNomeItem().compareTo(outraCarrinho.getNomeItem());
    }
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Carrinho> listaPedido = new ArrayList<>();

        int opcao = -1;

        String menu = """
                ============ MENU DE OPÇÕES =============
                1 - Incluir um produto
                0 - Encerrar
                
                Informe uma opção:
                """;

        Cliente cliente = new Cliente("Rodolfo", 1500);

        while (opcao != 0){
            System.out.println(menu);
            opcao = scanner.nextInt();
            if (opcao == 1){
                Carrinho compra = new Carrinho();

                System.out.println("Informe o nome do produto: ");
                String nomeItem = scanner.next();

                System.out.println("Informe o valor do produto R$ ");
                double valorItem = scanner.nextDouble();

                compra.setNomeItem(nomeItem);
                compra.setValorItem(valorItem);

                if (compra.debita(compra, cliente)){
                    listaPedido.add(compra);
                }else{
                    System.out.println("O valor da compra ultrapassa o limite do cartão!");
                    System.out.println("Seu limite atual é de: " + cliente.getLimite());
                }
            }else if(opcao != 0){
                System.out.println("O valor do argumento informado é inválido!");
            }else{
                System.out.println("Obrigado pela preferência!");
            }
        }

        Collections.sort(listaPedido);

        System.out.println("Olá, " + cliente.getNome() + " sua lista final de pedidos: ");
        if(!listaPedido.isEmpty()){
            for (Carrinho item: listaPedido){
                System.out.printf("""
                    Produto: %s               Valor R$: %.2f
                    """, item.getNomeItem(), item.getValorItem());
            }
        }else{
            System.out.println("Sua lista está vazia");
        }

    }
}
1 resposta
solução!

Bom dia!

Sua resolução ficou excelente! Você fez um ótimo uso do aprendizado.

Parabéns pelo empenho nos estudos e continue praticando.

Para que mais pessoas consigam visualizar a sua solução proposta, é recomendado que você marque este tópico como solucionado. Assim pode ajudar ainda mais pessoas :)

Bons estudos!