package desafio.compras;
public class CartaoCredito {
private double limite;
public CartaoCredito(double limite) {
this.limite = limite;
}
public double getLimite() {
return limite;
}
public void realizarCompra(Item item){
this.limite -= item.getValor();
}
}
package desafio.compras;
public class Item {
private String descricao;
private double valor;
public Item(String descricao, double valor) {
this.descricao = descricao;
this.valor = valor;
}
public String getDescricao() {
return descricao;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return """
%s - R$%.2f""".formatted(this.getDescricao(), this.getValor());
}
}
package desafio.compras;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Digite o limite do cartão:");
double limite = Double.parseDouble(sc.nextLine());
CartaoCredito cartao = new CartaoCredito(limite);
ArrayList<Item> listaProdutos = new ArrayList<>();
int controle = 1;
if(cartao.getLimite() > 0){
while (controle != 0){
System.out.println("Digite a descrição da compra:");
String descricao = sc.nextLine();
System.out.println("Digite o valor do compra:");
double valor = Double.parseDouble(sc.nextLine());
if(cartao.getLimite() < valor){
System.out.println("saldo insuficiente!");
break;
}
Item item = new Item(descricao, valor);
cartao.realizarCompra(item);
System.out.println("Compra realizada com sucesso!");
listaProdutos.add(item);
System.out.println("Digite 0 para sair ou 1 pra continuar");
controle = Integer.parseInt(sc.nextLine());
}
} else {
System.out.println("Limite não iniciando corretamente, o mesmo deve ser superior a 0.");
}
System.out.println("""
***********************
COMPRAS REALIZADAS:
""");
listaProdutos.sort(Comparator.comparing(Item::getValor));
listaProdutos.forEach(System.out::println);
System.out.println("""
***********************
Limite atual do Cartão: R$%.2f""".formatted(cartao.getLimite()));
}
}