Muito legal a forma de cada um pensar na solução do problema, veja a minha. Classe Cartao
package org.example.models;
import java.util.ArrayList;
import java.util.List;
public class Cartao {
private double limite;
private double saldo;
private List<Compra> compras;
private double total;
public Cartao(double limite) {
this.limite = limite;
this.saldo = limite;
this.compras = new ArrayList<>();
}
public boolean lancaCompra(Compra compra) {
if (this.saldo < compra.getValor()) {
System.out.println("Saldo insuficiente!! :(");
System.out.println(compras.toString());
System.out.println("**********************");
System.out.println("Compra NAÔ realizada!!");
System.out.println("**********************");
}
if (this.saldo > compra.getValor()) {
this.saldo -= compra.getValor();
this.compras.add(compra);
System.out.println("**********************");
System.out.println("Compra realizada!!");
System.out.println("**********************");
this.total = this.total + compra.getValor();
return true;
} else {
return false;
}
}
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getCompras() {
return compras;
}
@Override
public String toString() {
return "COMPRAS REALIZADAS:\n"+"Lista de compras: "+ compras + "\n Saldo do cartão: "+ this.saldo
;
}
}
Classe Compras
package org.example.models;
public class 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 "\nDescrição: " + descricao +
"\n valor: " + valor ;
}
}
Classe Main
package org.example;
import org.example.models.Cartao;
import org.example.models.Compra;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Bom dia");
System.out.println("***** Bem Vindo *****");
System.out.println("Digite o limite do cartão: ");
double limite = sc.nextDouble();
Cartao carta = new Cartao(limite);
int resposta = 1;
while (resposta == 1) {
System.out.println("Digite a descrição da compra: ");
String descricao = sc.next();
System.out.println("Digite o valor da compra: ");
double valor = sc.nextDouble();
Compra compra = new Compra(descricao, valor);
carta.lancaCompra(compra);
System.out.println("Digite 0 para sair ou 1 para continuar");
resposta = sc.nextInt();
if (resposta == 0) {
System.out.println(carta.toString());
System.out.println("Fim do programa");
resposta = 0;
}
}
}
}