Oii, Lucas.
Muito obrigada por compartilhar.
O que você fez muito bem:
- Fluxo do programa tá claro e funcional: pedir limite, registrar compras, perguntar se continua e ao final exibir extrato e saldo. Isso cumpre bem a proposta do “CompraFacil”.
- Organização por classes (modelos e principal): separar
MenuPrincipal de Compra e CartaoDeCredito é um passo importante para escrever código mais limpo e reutilizável. - Uso de
ArrayList e Comparator: ordenar as compras por preço com Comparator.comparing(Compra::getPreco) foi uma boa escolha e mostra que você está explorando bem a biblioteca padrão.
Pontos de atenção (com sugestões práticas):
- Variável
limite está funcionando como “saldo”
No início você pede “limite do cartão”, mas depois faz limite -= preco. Na prática, essa variável vira o saldo disponível, não mais o limite original.
Sugestão:
- Renomeie para
saldo (mais semântico), ou - Guarde os dois:
limiteInicial e saldo.
Isso melhora muito a leitura e evita confusão em projetos maiores.
2) Regra “saldo insuficiente” encerra o programa de forma brusca
Hoje, se preco > limite, você imprime “Saldo insuficiente!” e dá break, encerrando o loop imediatamente. Funciona, mas a experiência do usuário pode ficar estranha, porque ele não tem chance de:
- tentar outro valor,
- ou escolher continuar com outra compra.
Sugestões possíveis (escolha uma):
- Repetir a pergunta do valor até ser válido.
- Não adicionar a compra, informar o motivo e continuar o loop perguntando se deseja tentar outra compra.
Parabéns e bons estudos.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!