1
resposta

Compras

//Class Cartão

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

public class Cartao {
    private double limite;
    private double saldo;
    private List<Compra> listCompras;

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

    public double getLimite() {
        return limite;
    }

    public double getSaldo() {
        return saldo;
    }

    public List<Compra> getListCompras() {
        return listCompras;
    }

    //metodo Fazer Compra
    public boolean fazerCompra(Compra compra){
        //Verificar Saldo
        if( this.saldo>=compra.getValor() ){
            this.saldo-= compra.getValor();
            listCompras.add(compra);
            return true;
        }
        return false;

    }
}

//Class-Compras

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 double getValor() {
        return valor;
    }
    public String getDescricao() {
        return descricao;
    }

    @Override
    public String toString() {
        return "Produto: "+ this.descricao + " Valor: " + this.valor;
    }
    @Override
    public int compareTo(Compra outraCompra) {
        return Double.valueOf(this.valor).compareTo(Double.valueOf(outraCompra.valor));
    }
}

//Main - 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("Informa o Limite do Cartão:");
        Cartao cartao = new Cartao(leitura.nextDouble());

        int sair = 1;
        while(sair!=0){
            System.out.println("Informe a descrição do produto: ");
            String descricao = leitura.next();
            System.out.println("Informe o valor da compra: ");
            Compra compra = new Compra(descricao,leitura.nextDouble());

            if (cartao.fazerCompra(compra)) {
                System.out.println("Compra Efetuada com Sucesso!!!");
                System.out.println("Sair (0) ou (1) para Continuar");
                sair = leitura.nextInt();
                /*
                System.out.println("*******************************************");
                System.out.println("****************CUPOM FISCAL***************");
                System.out.println("*******************************************");*/
            }else  {
                System.out.println("Saldo insuficiente para efetuar a compra.");
                System.out.println("******************************************");
                System.out.println("Valor Compra: "+compra.getValor());
                System.out.println("Saldo: "+cartao.getSaldo());
                System.out.println("******************************************");
                System.out.println("Sair (0) ou (1) para Continuar");
                sair = leitura.nextInt();
            }

        }


        if(!cartao.getListCompras().isEmpty()) {

            Collections.sort(cartao.getListCompras());
            System.out.println("***********************");
            System.out.println("COMPRAS REALIZADAS:\n");
            for (Compra c : cartao.getListCompras()) {
                System.out.println(c.getDescricao() + " - " + c.getValor());
            }
            System.out.println("\n***********************");
        }

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

    }
}
1 resposta

Oi Rogerio, tudo bem?

Seu código está bem estruturado e atende aos requisitos propostos. A organização em classes e a interação com o usuário usando o Scanner foram boas escolhas. E, a implementação do tratamento de saldo insuficiente é uma adição importante para garantir a integridade das operações.

Um abraço e bons estudos.