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

Desafio Aplicação de Compras

Classe Cartão de Crédito

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

public class CartaoDeCredito {
    private double limite;
    private double saldo;
    private List<Compra> compras;


    public CartaoDeCredito(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 double getLimite() {
        return limite;
    }

    public double getSaldo() {
        return saldo;
    }

    public List<Compra> getCompras() {
        return compras;
    }
}

Classe Compra

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: descricao = " + descricao +
                " valor= " + valor;
    }

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

Classe Principal

import java.util.Collections;
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();
        CartaoDeCredito cartao = new CartaoDeCredito(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 = 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("***********************");
        System.out.println("COMPRAS REALIZADAS:\n");
        Collections.sort(cartao.getCompras());
        for (Compra c : cartao.getCompras()) {
            System.out.println(c.getDescricao() + " - " +c.getValor());
        }
        System.out.println("\n***********************");

        System.out.println("\nSaldo do cartão: " +cartao.getSaldo());
    }
}
2 respostas
solução!

Olá Renato, tudo bem com você?

Fico feliz em ler sua postagem com o seu código. Meus parabéns pela iniciativa de praticar o que foi ensinado na aula. Isso é muito importante para fixar o conteúdo e desenvolver suas habilidades em programação.

A título de curiosidade, podemos utilizar a função repeat para repetir um caractere um determinado número de vezes, por exemplo:

System.out.println("*".repeat(23));

No código acima o caractere * será repetido 23 vezes. No seu código, ficaria da seguinte forma:

// Código da classe Principal        
System.out.println("*".repeat(23));
System.out.println("COMPRAS REALIZADAS:\n");
Collections.sort(cartao.getCompras());
for (Compra c : cartao.getCompras()) {
    System.out.println(c.getDescricao() + " - " + c.getValor());
}
System.out.println("\n***********************");

System.out.println("\nSaldo do cartão: " +cartao.getSaldo());

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá Rafael, muito obrigado pela dica.

Abraços!