1
resposta

Minha tentativa!

Classe produto

public class Produto implements Comparable<Produto> {
    private String descricao;
    private double valor;


    public Produto(String descricao, double valor) {
        this.descricao = descricao;
        this.valor = valor;


    }

    public String getDescricao() {
        return descricao;
    }

    public double getValor() {
        return valor;
    }

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

    @Override
    public String toString() {
        return "Produto: descricao=" + descricao + " valor=" + valor;
    }



}

classe Cartao

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

public class Cartao {
    private double limite;
    private double saldo;
    private List<Produto> compras;


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

    }

    public double getSaldo() {
        return saldo;
    }


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

       return false;
   }

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

Main

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

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


        int sair = 1;


        System.out.println("digite o limite do cartao");
        double limite = leitura.nextDouble();
        Cartao cartao = new Cartao(limite);


        while (sair != 0) {
            System.out.println("vamos as compras?");
            System.out.println("Digite o nome do produto:");
            String nomeDoProduto = leitura.next();
            System.out.println("Digite o valor do produto");
            double valorDoProduto = leitura.nextDouble();

            Produto produto = new Produto(nomeDoProduto, valorDoProduto);
            boolean compraRealizada = cartao.lancaCompra(produto);

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

        }
        Collections.sort(cartao.getCompras());
        for (Produto c : cartao.getCompras()) {
            System.out.println(c.getDescricao() + " - " +c.getValor());
        }

    }
}
1 resposta

Fala Antonio, de boa ?

Cara olhando a solução tudo parece bem justo!

Ficou com alguma dúvida ? Se sim fala pra gente qual