Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Meu Projeto- Resolução do desafio.

package modelos;

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

public class CartaoDeCredito {

    protected int limite;

    protected int saldo;

    protected List<Compra> listaDeCompras;

    public CartaoDeCredito() {
        this.listaDeCompras = new ArrayList<>(); // Inicialização da lista de compras
    }


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

    public void notaFiscal(){
        ordenarListaDeCompras();
        System.out.println("*************************");
        System.out.println("Compras realizadas:");
        for(Compra item: listaDeCompras){
            System.out.println(item.toString());
        }
        System.out.println();
        System.out.println("*************************");
        System.out.println();
        System.out.println("Saldo: "+this.saldo);


    }
    private void ordenarListaDeCompras(){
        Collections.sort(listaDeCompras);
    }

    public void setLimiteSaldo(int limiteSaldo) {
        this.limite = limiteSaldo;
        this.saldo = limiteSaldo;
    }

    public int getLimite() {
        return limite;
    }


    public int getSaldo() {
        return saldo;
    }
}

package modelos;

public class Compra  implements Comparable<Compra> {
    protected String descricao;
    protected int valor;


    public Compra(String descricao, int valor) {
        this.descricao = descricao;
        this.valor = valor;
    }

    public String getDescricao() {
        return descricao;
    }

    public int getValor() {
        return valor;
    }

    @Override
    public String toString() {
        return "Compra(" +
                "descrição= '" + descricao + '\'' +
                ", valor= " + valor +
                ')';
    }

    @Override
    public int compareTo(Compra outraCompra) {
        if (this.valor > outraCompra.valor){
            return -1;
            }else if (this.valor < outraCompra.valor){
            return  +1;
        }
        return 0;
    }
}
import modelos.CartaoDeCredito;
import modelos.Compra;

import java.util.Collections;
import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);
        CartaoDeCredito cartaoDeCredito = new CartaoDeCredito();


        //Colocar o limite e o saldo do Cartão.
        System.out.println("Digite o limite do catão:");
        cartaoDeCredito.setLimiteSaldo(sc.nextInt());


        //Começo do loop onde acontece os registro de objetos e o pagamento
        int escolha;
        do {
            System.out.println("Digite a descrição do produto:");
            String nomeDoProduto = sc.next();
            System.out.println("Digite o Valor do produto:");
            int valorDoProduto = sc.nextInt();
            Compra compra = new Compra(nomeDoProduto, valorDoProduto);

            if (!cartaoDeCredito.lancaCompra(compra)){
                System.out.println("Saldo Insulficiente!");
                break;
            }else {
                System.out.println("Compra realizada!");
            }

            System.out.println("Digite 0 para sair ou 1 para continuar:");
            escolha = sc.nextInt();

        }while (escolha != 0);
        cartaoDeCredito.notaFiscal();

    }
}
1 resposta
solução!

Oi, Gabriel! Tudo bem?

Parabéns pelo código bem estruturado e as boas práticas aplicadas! A prática é essencial para consolidarmos o nosso aprendizado e nesse processo caso haja alguma dúvida pode contar aqui com a gente no fórum, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!