Bom dia, consegui finalizar o desafio e segue abaixo a minha solução
Minha classe CartaoDeCredito
import java.util.ArrayList;
import java.util.List;
public class CartaoDeCredito {
private double limite;
private double saldo;
private List<Compra> compras;
public CartaoDeCredito(double limite) {
this.limite = limite;
this.saldo = limite;
this.compras = new ArrayList<>();
}
public List<Compra> getCompras() {
return compras;
}
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
public boolean lancarCompra(Compra compra){
if(this.saldo > compra.getValor()){
this.saldo -= compra.getValor();
this.compras.add(compra);
return true;
}
return false;
}
public void addCompra(Compra compra){
this.compras.add(compra);
}
}
Minha classe Compra
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 "Produto = " + getDescricao() + ", valor= " + getValor() + "\n";
}
@Override
public int compareTo(Compra outroValor) {
return Double.valueOf(this.valor).compareTo(Double.valueOf(outroValor.valor));
}
}
Minha classe principal
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("--------------- ");
System.out.println("Menu de compras");
System.out.println("--------------- \n");
Scanner scan = new Scanner(System.in);
int numeroDigitado = 1;
System.out.println("Digite o limite do seu cartao");
double n = scan.nextDouble();
CartaoDeCredito credito = new CartaoDeCredito(n);
while(numeroDigitado == 1)
{
// System.out.println(" O saldo do seu cartao de crédito é: " + credito.getLimite());
System.out.println("Digite o nome do produto que deseja");
String nome = scan.next();
System.out.println("Digite o valor do produto");
double valor = scan.nextDouble();
Compra victorProdutos = new Compra(nome, valor);
if(credito.lancarCompra(victorProdutos))
{
Collections.sort(credito.getCompras());
System.out.println("Compra realizada com sucesso");
System.out.println("Digite 0 para sair ou 1 para continuar");
numeroDigitado = scan.nextInt();
if (numeroDigitado == 0){
System.out.println("Compras realizadas: \n" + credito.getCompras());
}
}
else
{
System.out.println("Saldo insuficiente");
if(credito.getCompras().isEmpty())
{
System.out.println("O seu carrinho está vazio, você não adicionou produtos.");
}
else
{
System.out.println("Compras realizadas: \n" + credito.getCompras());
}
System.out.println("Saldo do cartão de crédito " + credito.getSaldo());
}
}
}
}
Gostei do desafio, acho que minha principal dificuldade é sempre iniciar pra modelar a classe, saber o que de fato é necessário para implementar o negócio, depois que modelei a classe consegui prosseguir muito bem no que necessitava o desafio de acordo com o que a Jack passou pra gente.