Classe Compra
public class Compra {
private String descricao;
private double valor;
public Compra(String descricao, double valor) {
this.descricao = descricao;
this.valor = valor;
}
public String getNome() {
return descricao;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return descricao + " - R$ " + valor;
}
}
Classe Cartão de Crédito
public class CartaoDeCredito {
private double limite;
private double saldo;
public CartaoDeCredito(double limite) {
this.limite = limite;
this.saldo = limite;
}
public boolean limiteDisponivel(Compra compra) {
if(this.saldo >= compra.getValor()) {
this.saldo -= compra.getValor();
return true;
}
return false;
}
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
}
Classe Principal
public class Principal { public static void main(String[] args) {
System.out.println("***** Aplicação de Compras *****");
// Criação do Scanner para entrada do usuário
Scanner leitura = new Scanner(System.in);
// Definição do limite do cartão de crédito
System.out.println("Digite o limite do cartão:");
double limite = leitura.nextDouble();
CartaoDeCredito cartaoDeCredito = new CartaoDeCredito(limite);
// Lista para armazenar as compras realizadas
List<Compra> carrinho = new ArrayList<>();
int opcao = 1; // Variável de controle do loop de compras
while (opcao != 0) {
// Solicita a descrição da compra
System.out.println("Digite a descrição da compra:");
String descricao = leitura.next();
// Solicita o valor da compra
System.out.println("Digite o valor da compra:");
double valor = leitura.nextDouble();
Compra compra = new Compra(descricao, valor);
// Verifica se há limite suficiente para a compra
if (!cartaoDeCredito.limiteDisponivel(compra)) {
System.out.println("SALDO INSUFICIENTE! Compra não realizada.");
break; // Sai do loop caso não haja saldo suficiente
} else {
// Adiciona a compra ao carrinho e exibe o saldo atualizado
System.out.println("Compra realizada com sucesso!:");
carrinho.add(compra);
System.out.println("Seu Saldo restante é de: R$ " + cartaoDeCredito.getSaldo());
// Pergunta se deseja continuar comprando
System.out.println("Digite 0 para encerrar ou 1 para continuar comprando:");
opcao = leitura.nextInt(); // Atualiza a resposta para evitar loop infinito
}
}
// Exibe o resumo das compras realizadas
System.out.println("********************");
System.out.println("COMPRAS REALIZADAS:");
// Ordena a lista de compras pelo valor (do menor para o maior)
carrinho.sort(Comparator.comparing(Compra::getValor));
// Exibe as compras realizadas, uma por linha
carrinho.forEach(System.out::println);
System.out.println("********************");
System.out.println("Seu Saldo restante é de R$: " + cartaoDeCredito.getSaldo());
// Fecha o Scanner para evitar vazamento de recursos
leitura.close();
}
}