1
resposta

Hora da Prática - lista e coleções - desafio final

package br.com.alura.ContaCartao;
import br.com.alura.Calculos.CalculadoraDeLimite;
import java.util.*;

public class Principal {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);

        List <ListasDeTipos> lista = new ArrayList<>();
        ListasDeTipos adicionar = new ListasDeTipos();
        CalculadoraDeLimite calculadoraDeLimite = new CalculadoraDeLimite();

        System.out.println("Digite seu limite: ");
        calculadoraDeLimite.setLimite(entrada.nextDouble());

        int opcao = 0;
        String menu = """
                1- Comprar
                2- Mostrar Compras
                3- Ver Limite e Total de Compras
                4- Sair""";
        while (opcao != 4) {
            System.out.println("-----------------------------");
            System.out.println("   Operações Disponíveis");
            System.out.println(menu);
            System.out.println("Digite a Opção Desejada:");
            opcao = entrada.nextInt();
            if ((opcao != 1) && (opcao != 2) && (opcao != 3) && (opcao != 4)) {
                System.out.println("Opção invalida.");
                System.out.println("Escolha uma das opções do menu.");
            }
            System.out.println("-----------------------------");

            switch (opcao) {
                case 1:
                    System.out.println("Digite o nome do produto: ");
                    adicionar.setProduto(entrada.next());
                    entrada.nextLine();
                    System.out.println("Digite o preço do Produto: ");
                    adicionar.setPreco(entrada.nextDouble());

                    if (adicionar.getPreco() > calculadoraDeLimite.getLimite()){
                        System.out.println("Compra Recusada - Limite insuficiente.");
                    }
                    else{
                        lista.add(new ListasDeTipos(adicionar.getProduto(), adicionar.getPreco()));
                        calculadoraDeLimite.setAcumulaPreco(adicionar.getPreco());
                    }
                    System.out.println("---------------------------");
                    break;

                case 2:
                    boolean comprafeita = lista.isEmpty();
                    if (comprafeita) {
                        System.out.println("Nenhuma compra realizada.");
                    }
                    else {
                        lista.sort(Comparator.comparing(ListasDeTipos::getPreco));
                        for (ListasDeTipos compras : lista) {
                            System.out.println("* " + compras.getProduto() + " - " + compras.getPreco());
                        }
                    }
                    break;

                case 3:
                    System.out.print("Limite Restante: ");
                    System.out.println(calculadoraDeLimite.getLimite());
                    System.out.print("Preço total das compras: ");
                    System.out.println(calculadoraDeLimite.getAcumulaPreco());
                    break;
            }

    }
}
}
package br.com.alura.Calculos;

public class CalculadoraDeLimite {
    private double acumulaPreco;
    private double limite;

    public double getAcumulaPreco() {
        return acumulaPreco;
    }

    public void setAcumulaPreco(double acumulaPreco) {
        acumulaPreco = acumulaPreco + getAcumulaPreco() ;
        this.acumulaPreco = acumulaPreco;
    }

    public void setLimite(double limite) {
        this.limite = limite;
    }

    public double getLimite() {
        return limite - acumulaPreco;
    }

}
package br.com.alura.ContaCartao;

public class ListasDeTipos{
    private String produto;
    private double preco;

    public ListasDeTipos(String produto, double preco) {
        this.produto = produto;
        this.preco = preco;
    }

    public ListasDeTipos() {
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public String getProduto() {
        return produto;
    }

    public void setProduto(String produto) {
        this.produto = produto;
    }

    @Override
    public String toString() {
        return "{Produto = " + produto + ", Preço = " + preco + "}";
    }


}
1 resposta

Parabéns! Ficou bem legal!