1
resposta

Avaliacao da minha solucao para o desafio 5

package compras_cartao;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

public class Extrato {
    private String descricaoCompra;
    private double valorCompra;

    public Extrato(String descricaoCompra, double valorCompra) {
        this.descricaoCompra = descricaoCompra;
        this.valorCompra = valorCompra;
    }

    public String getDescricaoCompra() {
        return descricaoCompra;
    }

    public double getValorCompra() {
        return valorCompra;
    }

    @Override
    public String toString() {
        return String.format("%s - R$ %.2f", descricaoCompra, valorCompra);
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Digite o limite do cartao: ");

        double saldo = Double.parseDouble(input.nextLine());
        ArrayList<Extrato> listaDeCompras = new ArrayList<Extrato>();

        while (true) {
            System.out.println("Digite a descricao da compra: ");
            String descricao = input.nextLine();

            System.out.println("Digite o valor da compra: ");
            double valorCompra = Double.parseDouble(input.nextLine());

            if (valorCompra > saldo) {
                System.out.println("Saldo insuficiente!");
                break;
            }

            System.out.println("Compra realizada com sucesso!");
            listaDeCompras.add(new Extrato(descricao, valorCompra));
            saldo -= valorCompra;

            System.out.println("Digite 0 para encerrar ou 1 para continuar");
            int opcao = Integer.parseInt(input.nextLine());

            if (opcao == 0) {
                System.out.println("\n****************************");
                System.out.println("COMPRAS REALIZADAS:\n");
                listaDeCompras.sort(Comparator.comparing(Extrato::getValorCompra));

                for (Extrato compra : listaDeCompras) {
                    System.out.println(compra.toString());
                }

                System.out.println("\n****************************");
                System.out.printf("\nSaldo do cartao: R$ %.2f\n", saldo);

                break;
            }
        }
    }
}
1 resposta

Olá, Gregolly! Como vai?

Mandou muito bem na resolução da atividade!

Observei que você explorou o uso de listas para armazenar os registros de compras, utilizou muito bem o Comparator.comparing para ordenar os itens pelo valor e ainda compreendeu a importância do toString() para exibir os objetos de maneira clara e amigável.

Uma dica interessante para o futuro é usar Collections.sort com Comparator.reversed() para ordenar a lista em ordem decrescente quando precisar. Dessa forma:

listaDeCompras.sort(Comparator.comparing(Extrato::getValorCompra).reversed());

Resultado: Exibe as compras do maior valor para o menor.

Isso facilita análises diferentes, dependendo da necessidade do programa.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!