Principal.java :
package br.com.compras.principal;
import br.com.compras.calculos.Cartao;
import br.com.compras.calculos.Compra;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);
System.out.println( "Definir o limite do cartão de crédito");
double limiteCartao = leitura.nextDouble();
Cartao cartao = new Cartao(limiteCartao);
int option = 0;
String menu = """
** Escolha uma opção **
1 - Realizar compras
2 - Encerrar operações
""";
while (option != 2) {
System.out.println(menu);
option = leitura.nextInt();
if (option > 2 || option <= 0) {
System.out.println("Opção inválida. Tente novamente");
} else {
switch (option) {
case 1:
System.out.println("Digite o produto que deseja comprar.");
String produto = leitura.next();
System.out.println("Digite o valor do produto.");
double valor = leitura.nextDouble();
Compra compra = new Compra (produto, valor);
boolean compraFeita = cartao.realizaCompra(compra);
if (compraFeita) {
System.out.println("Compra realizada com sucesso!");
} else {
System.out.println("Falha ao realizar compra.\n Ultrapassou o limite do seu cartão de crédito ");
}
break;
case 2 :
System.out.println("\n***************\n");
System.out.println("Compras realizadas :");
Collections.sort(cartao.getCompras());
for (Compra c: cartao.getCompras()) {
System.out.println(c.getProduto() + " -> R$" + c.getValor());
}
System.out.println("\n***************\n");
System.out.println("Saldo restante no cartão de crédito para atingir seu limite:\n R$" + cartao.getSaldo());
}
}
}
}
}
Cartao.java:
package br.com.compras.calculos;
import java.util.ArrayList;
import java.util.List;
public class Cartao {
private double limiteCartao;
private double saldo;
private List<Compra> compras;
public Cartao(double limiteCartao) {
this.limiteCartao = limiteCartao;
this.saldo = limiteCartao;
this.compras = new ArrayList<>();
}
public boolean realizaCompra(Compra compra) {
if (this.saldo > compra.getValor()) {
this.saldo -= compra.getValor();
this.compras.add(compra);
return true;
}
return false;
}
public double getLimiteCartao() {
return limiteCartao;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getCompras() {
return compras;
}
}
Compra.java
package br.com.compras.calculos;
public class Compra implements Comparable<Compra>{
private String produto;
private double valor;
public Compra(String descricao, double valor) {
this.produto = descricao;
this.valor = valor;
}
public String getProduto() {
return produto;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return "Compra: Produtos: '" + produto + "'" +
"Valor = R$" + valor ;
}
public int compareTo(Compra outraCompra) {
return Double.valueOf(this.valor).compareTo(Double.valueOf(outraCompra.valor));
}
}
A maior diferença em relação ao código fornecido no curso está na forma do menu. O restante está bem parecido. Espero ter ajudado, obrigado!