Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Proyecto final del desafío

Main

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

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

        int opcion;
        Scanner teclado = new Scanner(System.in);

        // Solicita el límite de la tarjeta
        System.out.println("Escriba el límite de la tarjeta: ");
        double limite = teclado.nextDouble();
        Tarjeta tarjeta = new Tarjeta(limite);
        System.out.println("--------------------------");

        // Menú
        String menu = """
                Digite la opción:
                1. Seguir comprando
                2. Salir
                """;

        do {
            System.out.println(menu);
            opcion = teclado.nextInt();

            switch (opcion) {
                case 1:
                    // Descripción y valor de la compra
                    System.out.println("Escriba la descripción de su compra: ");
                    teclado.nextLine(); // Consumir el salto de línea que queda al usar nextInt()
                    String descripcion = teclado.nextLine();

                    System.out.println("Escriba el valor de la compra: ");
                    double valor = teclado.nextDouble();

                    // Crear una nueva compra y verificar si es posible realizarla
                    Compra compra = new Compra(valor, descripcion);
                    boolean compraRealizada = tarjeta.lanzarCompra(compra);

                    if (compraRealizada) {
                        System.out.println("¡Compra realizada!");
                    } else {
                        // Si no se puede realizar la compra, mostrar la lista de compras
                        System.out.println("Saldo insuficiente");
                        System.out.println("---------------------");
                        System.out.println("Compras realizadas:\n");
                        Collections.sort(tarjeta.getListaDeCompras());
                        for (Compra compra1 : tarjeta.getListaDeCompras()) {
                            System.out.println(compra1.getDescripcion() + " - $" + compra1.getValor());
                        }
                        System.out.println("\n-----------------------");
                        System.out.println("\nSaldo restante: " + tarjeta.getSaldo());

                        // Salir del bucle ya que el saldo es insuficiente
                        opcion = 2;
                    }

                    break;

                case 2:
                    // Mostrar las compras realizadas y el saldo final
                    System.out.println("Saliendo del programa");
                    System.out.println("---------------------");
                    Collections.sort(tarjeta.getListaDeCompras());
                    System.out.println("Compras realizadas:\n");
                    for (Compra compra1 : tarjeta.getListaDeCompras()) {
                        System.out.println(compra1.getDescripcion() + " - $" + compra1.getValor());
                    }
                    System.out.println("\n-----------------------");
                    System.out.println("\nSaldo restante: " + tarjeta.getSaldo());
                    break;

                default:
                    System.out.println("Opción no válida, intente de nuevo.");
            }
        } while (opcion != 2); // Repite hasta que se elija la opción de salir

        teclado.close(); // Cerrar el escáner al final
    }
}

Compra

public class Compra implements Comparable<Compra> {

    private  double valor;
    private String descripcion;

    public Compra(double valor, String descripcion) {
        this.valor = valor;
        this.descripcion = descripcion;
    }

    public double getValor() {
        return valor;
    }

    public String getDescripcion() {
        return descripcion;
    }

    @Override
    public String toString() {
        return "Compra: valor = $" + valor +
                ", descripcion = " + descripcion + '\'';
    }

    @Override
    public int compareTo(Compra otraCompra) {
        return Double.valueOf(this.valor).compareTo(Double.valueOf(otraCompra.getValor()));
    }
}
1 respuesta

Hola Valentina, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!