Depois de assistir mais algumas aulas percebi que com duas classes não fica muito organizado. mas terminei!
package cardscompras;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);
System.out.println("Digite o limite do cartão: ");
double limite = leitura.nextDouble();
CartaoCredito cartao = new CartaoCredito(limite);
int sair = 1;
while (sair != 0) {
System.out.println("Digite a descrição da compra:");
String produtoDescricao = leitura.next();
System.out.println("Digite o valor da compra:");
double produtoPreco = leitura.nextDouble();
Compra compra = new Compra(produtoDescricao, produtoPreco);
boolean compraRealizada = cartao.lancaCompra(compra);
if (compraRealizada) {
System.out.println("Compra realizada!");
System.out.println("Digite 0 para sair ou 1 para continuar");
sair = leitura.nextInt();
} else {
System.out.println("Saldo insuficiente!");
sair = 0;
}
System.out.println("Compras realizadas:\n");
for (Compra c : cartao.getCompras()) {
System.out.println(c.getProdutoDescricao() + " R$" + c.getProdutoPreco());
}
System.out.println("\nSaldo do cartão: " + cartao.getSaldo());
}
}
}
package cardscompras;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CartaoCredito{
private double limite;
private double saldo;
private List<Compra> compras;
public CartaoCredito(double limite) {
this.limite = limite;
this.saldo = limite;
this.compras = new ArrayList<>();
}
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getCompras() {
return compras;
}
public boolean lancaCompra(Compra compra){
if(this.saldo >= compra.getProdutoPreco()){
this.saldo -= compra.getProdutoPreco();
this.compras.add(compra);
return true;
}
return false;
}
}
package cardscompras;
public class Compra implements Comparable<Compra>{
private String produtoDescricao;
private double produtoPreco;
public Compra(String produtoDescricao, double produtoPreco) {
this.produtoDescricao = produtoDescricao;
this.produtoPreco = produtoPreco;
}
public String getProdutoDescricao() {
return produtoDescricao;
}
public double getProdutoPreco() {
return produtoPreco;
}
@Override
public String toString() {
return this.getProdutoDescricao() + " R$" + this.getProdutoPreco();
}
@Override
public int compareTo(Compra outraCompra) {
return Double.valueOf(this.produtoPreco).compareTo(Double.valueOf(outraCompra.produtoPreco));
}
}