Abaixo minha resolução, utilizando switch case tendo uma opção para o usuário poder visualizar seu saldo durante a execução do programa
CartaoDeCredito
package Projeto_Dados;
import java.util.ArrayList;
import java.util.List;
public class CartaoDeCredito {
private double limite;
private List<Compra> compras;
public CartaoDeCredito(double limite) {
this.limite = limite;
this.compras = new ArrayList<>();
}
public List<Compra> getCompras() {
return compras;
}
public void setCompras(List<Compra> compras) {
this.compras = compras;
}
public double getLimite() {
return limite;
}
public void setLimite(double limite) {
this.limite = limite;
}
@Override
public String toString() {
return "CartaoDeCredito{" + "limite=" + limite + '}';
}
}
Compra
package Projeto_Dados;
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 String getDescricao() {
return descricao;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return "Compra{" + "descricao=" + descricao + ", valor=" + valor + '}';
}
public int compareTo(Compra outraCompra) {
return Double.compare(this.valor, outraCompra.getValor());
}
}
Main
package Projeto_Dados;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);
System.out.println("Digite o limite do cartão de crédito: ");
double limite = leitura.nextDouble();
CartaoDeCredito cartao = new CartaoDeCredito(limite);
int opcao = 0;
while (opcao != 3) {
System.out.println("Selecione a opção desejada");
System.out.println("1 - Comprar");
System.out.println("2 - Verificar seu Saldo atual");
System.out.println("3 - Sair");
opcao = leitura.nextInt();
switch (opcao) {
case 1:
System.out.println("Digite a descrição da compra: ");
String descricao = leitura.next();
System.out.println("Digite o valor da compra: ");
double valor = leitura.nextDouble();
Compra compra = new Compra(descricao, valor);
if (cartao.getLimite() >= compra.getValor()) {
cartao.setLimite(cartao.getLimite() - compra.getValor());
cartao.getCompras().add(compra);
System.out.println("Compra realizada com sucesso!\n");
break;
} else {
System.out.println("Compra não realizada. Saldo insuficiente.\n");
opcao = 3;
}
break;
case 2:
System.out.println("Seu saldo atual é de: " + cartao.getLimite() + "\n");
break;
default:
System.out.println("Opção inválida.\n");
break;
}
}
// Resultado final, analisando se foi realizado compra ou não
if (cartao.getCompras().isEmpty()) {
System.out.println("Nenhuma compra realizada.");
} else {
System.out.println("Saindo...");
System.out.println("**********************************************");
System.out.println("Obrigado por utilizar nosso sistema, abaixo seu resumo de compras!");
Collections.sort(cartao.getCompras());
for (Compra c : cartao.getCompras()) {
System.out.println(c.getDescricao() + " - R$ " + c.getValor());
}
System.out.println("**********************************************");
System.out.println("\nSeu limite atual é de: " + cartao.getLimite());
}
}
}