1
resposta

Projeto final do desafio [Parte 2]

Classe PrincipalCompras:

package desafio4;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

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

        ArrayList<Compra>  compras = new ArrayList<>();

        int entradaUsuario = 0;
        while(entradaUsuario != -1){

            System.out.println(imprimePainel());
            entradaUsuario = sc.nextInt();
            sc.nextLine();
            switch (entradaUsuario){
                case 1:
                    boolean inserirMaisItem = true;
                    while(inserirMaisItem){
                        System.out.println("Digite o item: ");
                        String nomeItem = sc.nextLine();
                        System.out.println("Digite o preço: ");
                        double preco = sc.nextDouble();
                        if (cartao.getLimite() >= preco){
                            cartao.setCompra(preco);
                            compras.add(new Compra(nomeItem, preco));
                            System.out.println("Item adicionado com sucesso!");
                            System.out.println("Novo limite: " + cartao.getLimite());
                        } else {
                            System.out.println("Saldo insuficiente!");;
                        }
                        if (cartao.getLimite() > 0){
                            System.out.println("Inserir novo item? ");
                            System.out.println("1 - Sim\n2 - Não");
                            int opcao = sc.nextInt();
                            sc.nextLine();
                            if(opcao != 1){
                                inserirMaisItem = false;
                            }
                        } else {
                            inserirMaisItem = false;
                        }

                    }
                    entradaUsuario = 0;
                    break;
                case 2:
                    System.out.println("Lista de Compras: " + compras);
                    entradaUsuario = 0;
                    break;
                case 3:
                    boolean removerMaisItem = true;
                    while(removerMaisItem){
                        System.out.println("Itens da lista de Compras: " + compras);
                        System.out.println("Digite o nome do item a ser removido: ");
                        String itemParaRemocao = sc.nextLine();
                        for (Compra compra : compras) {
                            if (compra.getNome().equals(itemParaRemocao)) {
                                compras.remove(compra);
                                cartao.estorna(compra.getPreco());
                                break;
                            } else {
                                System.out.println("Nenhum item da lista corresponde à descrição.");
                            }
                        }
                        System.out.println("Remover novo item? ");
                        System.out.println("1 - Sim\n2 - Não");
                        int opcao = sc.nextInt();
                        if(opcao != 1){
                            removerMaisItem = false;
                        }
                    }
                    break;
                case 4:
                    Collections.sort(compras);
                    System.out.println("Lista de compras ordenada por preço: " + compras);
                    entradaUsuario = 0;
                    break;
                case 5:
                    entradaUsuario = -1;
                    break;
                default:
                    entradaUsuario = 0;
            }

        }
        sc.close();
    }
    public static String imprimePainel(){
        return """
                    1 - Adicionar Itens à Lista
                    2 - Mostrar lista de compras
                    3 - Remover Itens
                    4 - Ordenar Lista
                    5 - Sair""";
    }
}
1 resposta

Oi, Raoni! Como vai?

Agradeço por compartilhar.

Gostei da evolução do projeto, legal ver como você integrou bem as classes Compra, CartaoDeCredito e PrincipalCompras, criando um fluxo completo com menu, inserção, remoção e ordenação usando Collections.sort(), o que demonstra um bom domínio de listas e controle de estado.

Continue explorando esse tipo de estrutura, pois ela se aproxima bastante de cenários reais.

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