//CLASSE PRINCIPAL (MAIN)
import java.util.*;
public class Main {
public static void main(String[] args) {
boolean controle = true;
String descricao = "";
Double valorDaCompra;
Scanner readValue = new Scanner(System.in);
// Map<String, Double> compras = new HashMap<>();
System.out.println("Digite o limite do cartão: ");
double limite = readValue.nextDouble();
CartaoDeCredito cartao = new CartaoDeCredito(limite);
while (controle) {
readValue.nextLine(); //it consumes the caracter "\ n" so that there are no jumps.
System.out.println("Digite a descrição da compra: ");
descricao = readValue.nextLine();
System.out.println("Digite o valor da compra: ");
valorDaCompra = readValue.nextDouble();
Compra compra = new Compra(descricao, valorDaCompra);
if (cartao.lancaCompra(compra)) {
System.out.println("COMPRA REALIZADA!");
} else {
System.out.println("COMPRA NÃO REALIZADA! ");
System.out.println("SALDO INSUFICIENTE \n" + "SALDO ATUAL: " + cartao.getSaldo());
}
System.out.println("Digite 0(zero) para sair 1(um) para continuar");
if (readValue.nextInt() == 0) controle = false;
}
System.out.println("******************************************************** ");
System.out.println("COMPRAS REALIZADAS:");
Collections.sort(cartao.getCompras());
for(Compra compra : cartao.getCompras()) {
System.out.println(compra.getDescricao() + " " + compra.getValor());
}
System.out.println("******************************************************** ");
System.out.println("Saldo do cartão:" + cartao.getSaldo());
}
# }
//CLASSE CARTÃO DE CRÉDITO
import java.util.ArrayList;
import java.util.List;
public class CartaoDeCredito {
private double limite;
private double saldo;
private List<Compra> compras;
public CartaoDeCredito(double limite) {
this.limite = limite;
this.saldo = limite;
this.compras = new ArrayList<>();
}
//CLASSE COMPRA
public class Compra implements Comparable<Compra> {
private String descricao;
private double valor;
public Compra(String descricao, double valor) {
this.descricao = descricao;
this.valor = valor;
}
@Override
public String toString() {
return "descricao = " + descricao +
" valor = " + valor;
}
public String getDescricao() {
return descricao;
}
public double getValor() {
return valor;
}
@Override
public int compareTo(Compra compra) {
return Double.valueOf(this.valor).compareTo(Double.valueOf(compra.valor));
}
}