1
resposta

[Projeto] Sistema de compras com o cartão de crédito

import br.com.cartaodecredito.Cartao;
import br.com.cartaodecredito.Compra;

import java.util.Scanner;

public class Principal {
    public static void main(String[] args) {



        System.out.println("Bem vindo!");
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o limite do seu cartão: ");
        double limite = leitura.nextDouble();
        Cartao cartaoDeCredito = new Cartao(limite);

        int sair = 1;

        while (sair != 0) {
            System.out.println("Digite a descrição da compra: ");
            String descricao = leitura.next();
            System.out.println("Digite o valor da compra");
            double valor = leitura.nextDouble();

            Compra compra = new Compra(descricao, valor);
            boolean compraRealizada = cartaoDeCredito.lancaCompra(compra);

            if (compraRealizada) {
                System.out.println("Compra realizada com sucesso!");
                System.out.println("Digite 0 para sair ou 1 para continuar");
                sair = leitura.nextInt();
            } else {
                System.out.println("Seu saldo é insuficiente");
                sair = 0;
            }
        }


        System.out.println("___________________________________________");
        System.out.println("Compras realizadas: \n");

        for (Compra c : cartaoDeCredito.getCompras()) {
            System.out.println(c.getDescricao() + " - " + c.getValor());
        }

        System.out.println("\n_____________________________________________");
        System.out.println("Saldo do cartão: " + cartaoDeCredito.getSaldo());



    }
}
package br.com.cartaodecredito;

import java.util.ArrayList;
import java.util.List;

public class Cartao {

    private double limite;
    private double saldo;
    private List<Compra> compras;

    public double getLimite() {
        return limite;
    }

    public double getSaldo() {
        return saldo;
    }

    public Cartao(double limite) {
        this.limite = limite;
        this.saldo = limite;
        this.compras = new ArrayList<>();




    }

    public boolean lancaCompra (Compra compra) {
        if (this.saldo > compra.getValor()){
            this.saldo -= compra.getValor();
            this.compras.add(compra);
            return true;
        }
        return false;

    }


    public List<Compra> getCompras() {
        return compras;
    }
}
package br.com.cartaodecredito;

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 "Compra: descrição = " + descricao + ", Valor = " + valor;
    }

    @Override
    public int compareTo(Compra outraCompra) {
        return Double.compare(this.valor, outraCompra.valor);
    }
}

1 resposta

Oi, Manoela! Tudo bem?

Ótimo código! Espero que continue a explorar os conteúdos para ampliar seu conhecimento e desenvolver novas habilidades. Caso tenha restado alguma dúvida em relação a qualquer conteúdo do curso ou atividade, não hesite em perguntar, estou disponível e ficarei super feliz em poder ajudar!

Deixo como sugestão apenas no método lancaCompra da classe Cartao, que atualmente só realiza a compra se o saldo disponível for maior que o valor da compra, ou seja, não realiza a transação se o saldo for exatamente igual ao valor da compra, caso ache válido, ajustar a condição para permitir que o saldo seja igual ao valor da compra, assim:

public boolean lancaCompra(Compra compra) {
    if (this.saldo >= compra.getValor()) { // Mudança aqui
        this.saldo -= compra.getValor();
        this.compras.add(compra);
        return true;
    }
    return false;
}

Com essa pequena alteração, o sistema permitirá que a última compra esgote o saldo do cartão, se necessário.

Um forte abraço e bons estudos!