0
respostas

[Projeto] Solução do Desafio

Cartao.java

package DesafioFinal.Curso3;

import java.util.Random;
import java.util.Scanner;

public class Cartao{
    private double limite;

    public double getLimite() {
        return limite;
    }

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

Compra.java

package DesafioFinal.Curso3;

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

public class Compra {
    private String descricao;
    private double valor;

    public double getValor() {
        return valor;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

    public String getDescricao() {
        return descricao;
    }

    @Override
    public String toString() {
        return this.descricao + " - " + this.valor;
    }
}

Menu.java

package DesafioFinal.Curso3;

import ComOO.br.com.alura.screenmatch.modelos.Titulo;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Menu {

    private final Cartao cartao;
    private final List<Compra> lista = new ArrayList<>();

    public Menu(Cartao cartao){
        this.cartao = cartao;
    }

    public void executarMenu(Scanner scanner) {
        try {
            // Setando o saldo do cartão pelo Menu
            System.out.println("Digite o limite do cartão");
            double limiteCartao = scanner.nextDouble();
            scanner.nextLine();
            cartao.setLimite(limiteCartao);


            // Pegando o saldo do cartão e iniciando o loop
            double saldo = cartao.getLimite();
            boolean continua = true;

            while(continua){
                Compra compra = new Compra();
                System.out.println("Digite a descrição da compra");
                String descricaoInput = scanner.nextLine();
                compra.setDescricao(descricaoInput);

                System.out.println("Digite o valor da compra");
                double valorInput = scanner.nextDouble();
                scanner.nextLine();
                compra.setValor(valorInput);

                if(saldo < valorInput){
                    System.out.println("\nSaldo insuficiente!");
                    continua = false;
                    break;
                }

                saldo -= valorInput;
                lista.add(compra);
                System.out.println("Compra realizada");


                System.out.println("Digite 0 para sair ou 1 para continuar");
                double decisao = scanner.nextDouble();
                scanner.nextLine();
                if(decisao == 0) continua = false;

                lista.sort(Comparator.comparing(Compra::getValor));
            }

            System.out.println("\n**********************\nCOMPRAS REALIZADAS:\n");
                for(Compra item : lista){
                    System.out.println(item);
                }
            System.out.println("\n**********************");
            System.out.println("\nSaldo do cartão: "+ saldo);

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}

Principal.java

package DesafioFinal.Curso3;

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

public class Principal {
    public static void main(String[] args) {

        Cartao cartao = new Cartao();
        Menu menu = new Menu(cartao);
        Scanner scanner = new Scanner(System.in);

        menu.executarMenu(scanner);


    }
}