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

[Projeto] Projeto com Listas

Abaixo minha resolução, utilizando switch case tendo uma opção para o usuário poder visualizar seu saldo durante a execução do programa

CartaoDeCredito

package Projeto_Dados;

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

public class CartaoDeCredito {

    private double limite;
    private List<Compra> compras;

    public CartaoDeCredito(double limite) {
        this.limite = limite;
        this.compras = new ArrayList<>();
    }

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

    public void setCompras(List<Compra> compras) {
        this.compras = compras;
    }

    public double getLimite() {
        return limite;
    }

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

    @Override
    public String toString() {
        return "CartaoDeCredito{" + "limite=" + limite + '}';
    }
}

Compra

package Projeto_Dados;

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

    public double getValor() {
        return valor;
    }

    @Override
    public String toString() {
        return "Compra{" + "descricao=" + descricao + ", valor=" + valor + '}';
    }

    public int compareTo(Compra outraCompra) {
        return Double.compare(this.valor, outraCompra.getValor());
    }
}

Main

package Projeto_Dados;

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

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

        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o limite do cartão de crédito: ");
        double limite = leitura.nextDouble();
        CartaoDeCredito cartao = new CartaoDeCredito(limite);

        int opcao = 0;
        while (opcao != 3) {
            System.out.println("Selecione a opção desejada");
            System.out.println("1 - Comprar");
            System.out.println("2 - Verificar seu Saldo atual");
            System.out.println("3 - Sair");
    
            opcao = leitura.nextInt();
            switch (opcao) {
    
                case 1:
                    System.out.println("Digite a descrição da compra: ");
                    String descricao = leitura.next();
                    System.out.println("Digite o valor da compra: ");
                    double valor = leitura.nextDouble();
                    Compra compra = new Compra(descricao, valor);
    
                    if (cartao.getLimite() >= compra.getValor()) {
                        cartao.setLimite(cartao.getLimite() - compra.getValor());
                        cartao.getCompras().add(compra);
                        System.out.println("Compra realizada com sucesso!\n");
                        break;
                    } else {
                        System.out.println("Compra não realizada. Saldo insuficiente.\n");
                        opcao = 3;
                    }
                    break;
    
                case 2:
                    System.out.println("Seu saldo atual é de: " + cartao.getLimite() + "\n");
                    break;
    
                default:
                    System.out.println("Opção inválida.\n");
                    break;
            }
        }
        
        // Resultado final, analisando se foi realizado compra ou não
        if (cartao.getCompras().isEmpty()) {
            System.out.println("Nenhuma compra realizada.");
        } else {
            System.out.println("Saindo...");
            System.out.println("**********************************************");
            System.out.println("Obrigado por utilizar nosso sistema, abaixo seu resumo de compras!");

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

            System.out.println("**********************************************");
            System.out.println("\nSeu limite atual é de: " + cartao.getLimite());
        }
    }
}
1 resposta
solução!

Olá, Gabriel!

Obrigada por compartilhar seu código! O uso de switch case para o menu e a implementação da listagem de compras com ordenação são ótimas escolhas.

Parabéns pelo avanço no projeto.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓

bons estudos