Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] [Projeto Final] - Compras com o cartão de crédito

Olá, pessoal. Tudo bem? Disponibilizando aqui minha ideia de solução do desafio proposto: Obs: utilizei o próprio limite do cartão como sendo o saldo restante. Eu entendo a diferença das duas variáveis, mas como não utilizariamos o limite para mais nada, decidi trabalhar somente com ele.

Classe do Cartão de Crédito

package br.com.joaovictor.comprasCartaoCredito.modelos;

public class CartaoDeCredito {
    private double limiteCartao;

    public CartaoDeCredito(double limiteCartao) {
        this.limiteCartao = limiteCartao;
    }
    public double getLimiteCartao() {
        return limiteCartao;
    }
    public boolean temLimite (double valor) {
        if (valor>this.limiteCartao || this.limiteCartao==0) {
            return false;
        }
        return true;
    }

    public void diminuiLimite (double valor) {
        limiteCartao-=valor;
    }
}

Classe das Compras

package br.com.joaovictor.comprasCartaoCredito.modelos;

import org.w3c.dom.ls.LSOutput;

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

Classe principal

package br.com.joaovictor.comprasCartaoCredito.principal;

import br.com.joaovictor.comprasCartaoCredito.modelos.CartaoDeCredito;
import br.com.joaovictor.comprasCartaoCredito.modelos.Compra;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Digite o limite do cartão: ");
        double limiteCartao = sc.nextDouble();
        CartaoDeCredito meuCartao = new CartaoDeCredito(limiteCartao);

        boolean queroContinuar = true;
        boolean temLimite = true;

        List<Compra> minhaCompra = new ArrayList<>();

        do {
            System.out.print("\nDigite a descrição da compra: ");
            sc.nextLine();
            String descricaoCompra = sc.nextLine();
            System.out.print("Digite o valor da compra: ");
            double valorCompra = sc.nextDouble();
            temLimite = meuCartao.temLimite(valorCompra);
            if (temLimite) {
                minhaCompra.add(new Compra(descricaoCompra, valorCompra));
                System.out.println("Compra realizada!");
                meuCartao.diminuiLimite(valorCompra);
                System.out.print("\nDigite 0 para sair ou 1 para continuar: ");
                int opcaoEscolhida = sc.nextInt();
                if (opcaoEscolhida == 0) {
                    queroContinuar = false;
                }
            }
            else {
                System.out.println("Desculpe, mas você não tem limite!");
            }
        } while(temLimite && queroContinuar);

        minhaCompra.sort(Comparator.comparing(Compra::getValor));
        System.out.println("\n***********************");
        System.out.println("COMPRAS REALIZADAS:");
        System.out.println();
        for (Compra x : minhaCompra) {
            System.out.println(x.getDescricao() + " - R$ " + x.getValor());
        }
        System.out.println("\n***********************");
        System.out.println("Saldo do cartão: R$ " + meuCartao.getLimiteCartao());

        sc.close();
    }
}
2 respostas
solução!

Olá, João! Tudo sim, e com você?

Uau, ficou ótimo!

Agradecemos por compartilhar seu código, gostei bastante! Parabéns pelo desenvolvimento do desafio proposto!

Continue assim :)

Qualquer dúvida, estamos por aqui.

Espero ter ajudado e bons estudos!

Muito obrigado, Akemi!!