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

Desafio

import modelo.Compra;
import modelo.TarjetaCredito;
import java.util.Scanner;

public class Principal {

public static void main(String[] args) {

    Scanner leer = new Scanner(System.in);

    System.out.print("Ingrese el límite de la tarjeta: ");
    double limite = leer.nextDouble();

    TarjetaCredito tarjeta = new TarjetaCredito(limite);

    int opcion;

    do {
        System.out.println("\n1. Realizar compra");
        System.out.println("2. Ver compras");
        System.out.println("3. Salir");
        System.out.print("Seleccione una opción: ");
        opcion = leer.nextInt();
        leer.nextLine();

        switch (opcion) {

            case 1:
                System.out.print("Descripción: ");
                String descripcion = leer.nextLine();

                System.out.print("Valor: ");
                double valor = leer.nextDouble();

                Compra nuevaCompra = new Compra(descripcion, valor);

                if (tarjeta.realizarCompra(nuevaCompra)) {
                    System.out.println("Compra realizada");
                } else {
                    System.out.println(" Saldo insuficiente");
                }
                break;

            case 2:
                tarjeta.mostrarCompras();
                break;

            case 3:
                System.out.println(" Gracias por usar el sistema");
                break;

            default:
                System.out.println("Opción inválida");
        }

    } while (opcion != 3);

    leer.close();
}

}

1 respuesta

¡Hola Liliana!

Veo que estás trabajando en un programa Java para gestionar compras con una tarjeta de crédito. Tu código parece estar bien estructurado para el menú de opciones, pero si buscas una sugerencia para mejorarlo o ajustarlo, aquí tienes algunas ideas basadas en el contexto que tengo:

  1. Simplificación del flujo de control: En lugar de usar un do-while, podrías considerar usar un while con una condición más clara. Esto puede hacer que el flujo del programa sea más fácil de seguir.

  2. Uso de métodos para modularizar el código: Podrías extraer la lógica de cada opción del menú en métodos separados. Por ejemplo, un método para realizar una compra y otro para mostrar las compras. Esto mejora la legibilidad y el mantenimiento del código.

  3. Validación de entradas: Siempre es una buena práctica validar las entradas del usuario. Por ejemplo, asegurarte de que el valor ingresado para la compra sea positivo.

Aquí tienes un ejemplo de cómo podrías estructurar el menú usando métodos:

public class Principal {

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

        System.out.print("Ingrese el límite de la tarjeta: ");
        double limite = leer.nextDouble();

        TarjetaCredito tarjeta = new TarjetaCredito(limite);

        int opcion;
        do {
            mostrarMenu();
            opcion = leer.nextInt();
            leer.nextLine();

            switch (opcion) {
                case 1:
                    realizarCompra(leer, tarjeta);
                    break;
                case 2:
                    tarjeta.mostrarCompras();
                    break;
                case 3:
                    System.out.println("Gracias por usar el sistema");
                    break;
                default:
                    System.out.println("Opción inválida");
            }
        } while (opcion != 3);

        leer.close();
    }

    private static void mostrarMenu() {
        System.out.println("\n1. Realizar compra");
        System.out.println("2. Ver compras");
        System.out.println("3. Salir");
        System.out.print("Seleccione una opción: ");
    }

    private static void realizarCompra(Scanner leer, TarjetaCredito tarjeta) {
        System.out.print("Descripción: ");
        String descripcion = leer.nextLine();

        System.out.print("Valor: ");
        double valor = leer.nextDouble();

        Compra nuevaCompra = new Compra(descripcion, valor);

        if (tarjeta.realizarCompra(nuevaCompra)) {
            System.out.println("Compra realizada");
        } else {
            System.out.println("Saldo insuficiente");
        }
    }
}

Espero que estas sugerencias te sean útiles para mejorar tu programa. ¡Espero haber ayudado y buenos estudios!