Compra
public class Compra implements Comparable{
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 "Item Comprado: " + descricao + ", Valor: R$" + valor;
}
@Override
public int compareTo(Object o) {
return Double.compare(this.valor, ((Compra)o).getValor());
}
}
CartaoCredito
import java.util.List;
public class CartaoCredito {
private double limite;
private double saldo;
private List<Compra> compras;
public CartaoCredito(double limite) {
this.limite = limite;
this.saldo = limite;
this.compras = new java.util.ArrayList<>();
}
public boolean realizarCompra(Compra compra) {
if (compra.getValor() <= this.saldo) {
compras.add(compra);
this.saldo -= compra.getValor();
return true;
}
return false;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getCompras() {
return compras;
}
}
Main
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
System.out.println("Sistema de Cartão de Crédito");
System.out.println("Digite o Saldo Inicial do Cartão:");
java.util.Scanner scanner = new java.util.Scanner(System.in);
double limite = scanner.nextDouble();
CartaoCredito cartao = new CartaoCredito(limite);
int sair = 1;
while (sair != 0) {
System.out.println("Descrição da Compra:");
scanner.nextLine();
String descricao = scanner.nextLine();
System.out.println("Insira o Valor da Compra:");
double valor = scanner.nextDouble();
Compra compra = new Compra(descricao, valor);
List<Compra> comprasRealizadas = cartao.getCompras();
if (compra.getValor() <= cartao.getSaldo()) {
cartao.realizarCompra(compra);
System.out.println("Compra realizada com sucesso! " + "Saldo Atual: R$" + cartao.getSaldo());
} else if (compra.getValor() > cartao.getSaldo()) {
System.out.println("Saldo insuficiente para realizar a Compra! Tente um valor menor.");
System.out.println("Saldo Atual: R$" + cartao.getSaldo());
} else {
System.out.println("Valor inválido para a Compra!");
}
if (cartao.getSaldo() <= 0) {
System.out.println("Saldo do Cartão esgotado! Encerrando o sistema.");
sair = 0;
System.out.println("Compras Realizadas:");
Collections.sort(cartao.getCompras());
for (Compra c : comprasRealizadas) {
System.out.println(c);
}
System.out.println("Saldo Final do Cartão: R$" + cartao.getSaldo());
System.out.println("Obrigado por usar o Sistema de Cartão de Crédito!");
} else {
System.out.println("Deseja Continuar Comprando? (S/N)");
String resposta = scanner.next();
if (resposta.equalsIgnoreCase("S")) {
sair = 1;
} else {
sair = 0;
System.out.println("Compras Realizadas:");
Collections.sort(cartao.getCompras());
for (Compra c : comprasRealizadas) {
System.out.println(c);
}
System.out.println("Saldo Final do Cartão: R$" + cartao.getSaldo());
System.out.println("Obrigado por usar o Sistema de Cartão de Crédito!");
}
}
}
}
}