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 + "}";
}
}