1
resposta

Minha visão do problema.

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;
            }

        }


    }
}
1 resposta

Olá William, tudo bem?

Muito legal a sua solução para o problema! A classe Cartao está bem estruturada e a utilização da lista de compras é uma ótima forma de armazenar as informações.

Uma sugestão que poderia ser implementada seria a adição de um método para mostrar o total de gastos do cartão, para que o usuário possa ter uma visão mais clara de suas despesas.

Além disso, seria interessante adicionar tratamento de exceções para evitar erros no momento de lançar uma compra.

Espero ter ajudado e bons estudos!