Olá! Assim resolvi o desafio proposto na Aula 5.
import br.com.alura.models.Cartao;
import br.com.alura.models.Compra;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
static void main() {
Scanner input = new Scanner(System.in);
System.out.print("Digite o limite do seu cartão: ");
double limite = input.nextDouble();
var cartao = new Cartao(limite);
ArrayList<Compra> compras = new ArrayList<>();
int opcao = 1;
while(opcao == 1){
System.out.print("Digite a descrição da sua compra: ");
input.nextLine();
String descricao = input.nextLine();
System.out.print("Digite o valor da compra: ");
double valorCompra = input.nextDouble();
if(cartao.utilizarLimite(valorCompra)){
var compra = new Compra(descricao, valorCompra);
compras.add(compra);
System.out.println("Compra realizada!");
} else{
System.out.println("Limite insuficiente!");
System.out.println("*********************");
Collections.sort(compras);
System.out.println(compras);
System.out.println("*********************");
}
opcao = -1;
while(opcao != 1 && opcao != 0) {
System.out.println("Deseja continuar comprando?\n[1] Sim\n[0] Não");
opcao = input.nextInt();
}
}
}
}
package br.com.alura.models;
public class Cartao {
private double limiteTotal;
private double limiteDisp;
public Cartao(double limite) {
this.limiteTotal = limite;
this.limiteDisp = limite;
}
public double getLimiteTotal() {
return limiteTotal;
}
public double getLimiteDisp() {
return limiteDisp;
}
public boolean utilizarLimite(double d){
boolean value = false;
if (this.limiteDisp - d >= 0){
value = true;
this.limiteDisp -= d;
}
return value;
}
}
package br.com.alura.models;
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 this.getDescricao() + ": R$ " + this.getValor();
}
@Override
public int compareTo(Compra c) {
return this.getDescricao().compareTo(c.getDescricao());
}
}