Boa tarde, pessoal
Tudo bem?
Segue a resolução do desafio:
Classe Cartao
package br.com.alura.desafio03.cartao;
public class Cartao {
private double limiteCartao;
public Cartao(double limiteCartao) {
this.limiteCartao = limiteCartao;
}
public double getLimiteCartao() {
return limiteCartao;
}
public void setLimiteCartao(double compra) {
this.limiteCartao -= compra;
}
public boolean verificaLimite(double compra){
if(compra<=this.limiteCartao){
return true;
}
else {
return false;
}
}
}
Classe Compra
package br.com.alura.desafio03.compra;
import java.util.List;
public class Compra implements Comparable { private String nome; private double valor;
//Método construtor
public Compra(String nome, double valor) {
this.nome = nome;
this.valor = valor;
}
public String getNome() {
return nome;
}
public double getValor() {
return valor;
}
public boolean verificaSeHaCompra(List<Compra> lista){
if(lista.isEmpty())
return true;
else
return false;
}
@Override
public String toString() {
return "\n" +getNome() + " - " + getValor()+"\n";
}
@Override
public int compareTo(Compra outraCompra) {
return Double.valueOf(this.getValor()).compareTo(Double.valueOf(outraCompra.getValor()));
}
}
Classe Principal
package br.com.alura.desafio03;
import br.com.alura.desafio03.cartao.Cartao; import br.com.alura.desafio03.compra.Compra;
import java.util.*;
public class Principal { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int opcao=0; double limiteCartao=0; List listaCompra = new ArrayList<>(); System.out.print("Digite o limite do cartão: ");
limiteCartao = entrada.nextDouble();
Cartao cartao = new Cartao(limiteCartao);
do {
if(limiteCartao<=0){
System.out.println("O valor do limite do cartão tem que ser maior do que zero!");
}else{
System.out.print("Digite a descrição da compra: ");
String nomeCompra = entrada.next();
double valorCompra = 0;
do {
System.out.print("Digite o valor da compra: ");
valorCompra = entrada.nextDouble();
if (valorCompra <=0) {
System.out.println("O valor da compra tem que maior do zero!");
}
}while (valorCompra <=0);
Compra compra1 = new Compra(nomeCompra,valorCompra);
if(cartao.verificaLimite(valorCompra)){
cartao.setLimiteCartao(valorCompra);
listaCompra.add(compra1);
System.out.println("Compra realizada!");
System.out.println("Digite 0 para sair ou 1 para continuar");
opcao = entrada.nextInt();
}else {
System.out.println("Saldo insuficiente!");
}
}
}while (opcao==1);
System.out.println("COMPRAS REALIZADAS:");
if(listaCompra.isEmpty())
System.out.println("Não há compras no cartão");
else{
Collections.sort(listaCompra);
System.out.println(listaCompra);
}
System.out.println("Saldo do cartão: "+ cartao.getLimiteCartao());
}
}