package modelos;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Cartao {
private double limite;
private List<Compra> listaCompras;
public Cartao(double limite) {
this.limite = limite;
this.listaCompras = new ArrayList<>();
}
public void fatura(Compra compra) {
this.limite -= compra.getValor();
this.listaCompras.add(compra);
Collections.sort(listaCompras);
}
public void imprimiFatura(){
System.out.println("********************************************");
System.out.println("COMPRAS REALIZADAS:");
System.out.println("\n");
for (Compra compra: listaCompras){
System.out.println(compra);
}
System.out.println("\n");
System.out.println("Saldo do cartão: " + this.limite);
System.out.println("\n");
System.out.println("********************************************");
}
public double getLimite() {
return limite;
}
}
package modelos;
public class Compra implements Comparable<Compra>{
private String descricao;
private double valor;
public Compra(String descricao, double valor) {
this.descricao = descricao;
this.valor = valor;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return this.descricao + " - " + this.valor;
}
@Override
public int compareTo(Compra compra) {
return Double.valueOf(this.getValor()).compareTo(compra.getValor());
}
}
package principal;
import modelos.Cartao;
import modelos.Compra;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int opcao = 1;
boolean saldoInsuficiente = false;
Scanner leitura = new Scanner(System.in);
System.out.println("Informe o limite do seu cartão:");
Cartao cartao = new Cartao(leitura.nextInt());
while(opcao != 0){
System.out.println("Digite a descrição da compra:");
String descricaoCompra = leitura.next();
System.out.println("Digite o valor da compra:");
double valorCompra = leitura.nextDouble();
Compra compras = new Compra(descricaoCompra, valorCompra);
if(compras.getValor() < cartao.getLimite()){
cartao.fatura(compras);
System.out.println("Compra realizada com sucesso!");
System.out.println("Digite 0 para sair ou 1 para continuar:");
opcao = leitura.nextInt();
}else{
saldoInsuficiente = true;
System.out.println("Saldo insufucuente");
}
if(opcao == 0 || saldoInsuficiente) {
cartao.imprimiFatura();
opcao = 0;
}
}
}
}