1
resposta

Desafio minha resolução

import com.patrick.desafio03.models.CartaoDeCredito;
import com.patrick.desafio03.models.Produtos;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("O seu limite é de: ");
        CartaoDeCredito limite = new CartaoDeCredito();
        limite.setLimite(1000);
        System.out.println(limite + "\n");


        System.out.println("Oque voce deseja comprar :" + "\n");
        Produtos produto1 = new Produtos("Calças", 5);
        Produtos produto2 = new Produtos("Bermudas", 10);
        Produtos produto3 = new Produtos("Camisetas", 60.5);
        Produtos produto4 = new Produtos("Sapatos", 75);

        System.out.println(produto1 + "\n" + produto2 + "\n" + produto3 + "\n" + produto4 + "\n");

        while (true) {
            System.out.println("Digite 1 para Calças");
            System.out.println("Digite 2 para Bermudas");
            System.out.println("Digite 3 para Camisetas");
            System.out.println("Digite 4 para Sapatos");
            System.out.println("Digite 5 para mostrar as compras");
            System.out.println("Digite 6 para sair");


            int opcao = scanner.nextInt();

            switch (opcao) {
                case 1:
                    System.out.println("Voce comprou uma calça " + "\n" + "Seu novo limite é de: ");
                    limite.novoLimite(produto1.getValor());
                    limite.adicionarCompra(produto1);
                    System.out.println(limite + "\n");
                    break;

                case 2:
                    System.out.println("Voce comprou uma Camiseta " + "\n" + "Seu novo limite é de: ");
                    limite.novoLimite(produto2.getValor());
                    limite.adicionarCompra(produto2);
                    System.out.println(limite + "\n");
                    break;

                case 3:
                    System.out.println("Voce comprou um Sapato " + "\n" + "Seu novo limite é de: ");
                    limite.novoLimite(produto3.getValor());
                    limite.adicionarCompra(produto3);
                    System.out.println(limite + "\n");
                    break;

                case 4:
                    System.out.println("Voce comprou uma Bermuda " + "\n" + "Seu novo limite é de: ");
                    limite.novoLimite(produto4.getValor());
                    limite.adicionarCompra(produto4);
                    System.out.println(limite + "\n");
                    break;

                case 5:
                    limite.mostrarComprasRealizadas();
                    break;

                case 6:
                    System.out.println("Saindo...");
                    System.exit(0);

                default:
                    System.out.println("Opção invalida.");

            }

        }
    }
}
package com.patrick.desafio03.models;

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

public class CartaoDeCredito {
    private double limite;
    private final List<Produtos> comprasRealizadas;

    public CartaoDeCredito() {
        this.comprasRealizadas = new ArrayList<>();
    }


    public double getLimite() {
        return limite;
    }

    public void setLimite(double limite) {
        this.limite = limite;
    }

    public void novoLimite(double valor) {
        limite -= valor;
    }

    public void adicionarCompra(Produtos produto) {
        comprasRealizadas.add(produto);
    }

    public void mostrarComprasRealizadas() {
        System.out.println("Compras realizadas:");
        for (Produtos produto : comprasRealizadas) {
            System.out.println(produto);
        }
        System.out.println();
    }

    @Override
    public String toString() {
        return String.valueOf(getLimite());
    }
}
package com.patrick.desafio03.models;

public class Produtos {
    private final String nome;
    private final double valor;




    public Produtos(String nome, double valor){
        this.nome = nome;
        this.valor = valor;
    }


    public String getNome() {
        return nome;
    }

    public double getValor() {
        return valor;
    }




    @Override
    public String toString() {
        return getNome() + " preço:" + getValor();
    }
}

1 resposta

Olá, Patrick!

Ficou muito bom a sua solução! Parabéns!

Um detalhe é que você informe o limite do cartão de crédito e realize compras até não desejar mais ou até o limite ser atingido. Além disso, as compras devem ser exibidas por ordem de valor.

Você pode fazer algumas alterações no seu código. Primeiro, adicione um método ordenarComprasPorValor() na classe CartaoDeCredito para ordenar a lista de compras realizadas por valor. Você pode utilizar o método Collections.sort() passando um comparador que compara os valores dos produtos.

public void ordenarComprasPorValor() {
    comprasRealizadas.sort(Comparator.comparingDouble(Produtos::getValor));
}

Em seguida, no seu loop while, adicione uma opção para exibir as compras realizadas e ordená-las por valor. Quando o usuário selecionar essa opção, chame o método ordenarComprasPorValor() e em seguida chame o método mostrarComprasRealizadas() para exibir as compras.

case 5:
    limite.ordenarComprasPorValor();
    limite.mostrarComprasRealizadas();
    break;

Dessa forma, as compras serão exibidas por ordem de valor quando o usuário selecionar a opção correspondente.

Espero ter ajudado e bons estudos!