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

[Proyecto] Asi Lo Realize yo

package Principal;

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

class Compra { String descripcion; double valor;

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

}

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

    double limiteTarjeta;
    String descripcionCompra;
    double valorCompra;
    int escribirSalir = 0;
    int ahoraSalgo = 1;

    ArrayList<Compra> listaCompras = new ArrayList<>();

    Scanner sc = new Scanner(System.in);

    System.out.println("Escribe el limite de la tarjeta");
    limiteTarjeta = sc.nextDouble();
    sc.nextLine();

    while (escribirSalir != ahoraSalgo) {

        System.out.println("Escribe la descripcion de la compra");
        descripcionCompra = sc.nextLine();

        System.out.println("Escribe el valor de la compra");
        valorCompra = sc.nextDouble();
        sc.nextLine();

        if (valorCompra <= limiteTarjeta) {
            listaCompras.add(new Compra(descripcionCompra, valorCompra));
            limiteTarjeta = limiteTarjeta - valorCompra;
            System.out.println("Compra Realizada");

        } else {
            System.out.println("Saldo Insuficiente En Tarjeta");
            mostrarResumen(listaCompras, limiteTarjeta);
            break;
        }

        System.out.println("Escribe 0 para salir y 1 para continuar");
        ahoraSalgo = sc.nextInt();
        sc.nextLine();

        if (ahoraSalgo == 0) {
            mostrarResumen(listaCompras, limiteTarjeta);
            break;
        } else if (ahoraSalgo != 1) {
            System.out.println("Has ingresado un número inválido, continuaré por defecto.");
            ahoraSalgo = 1;
        }
    }
}

public static void mostrarResumen(ArrayList<Compra> lista, double saldo) {
    if (lista.isEmpty()) {
        System.out.println("No se realizaron compras.");
    } else {
        Collections.sort(lista, Comparator.comparingDouble(c -> c.valor));

        System.out.println("\n*******************************\n");
        System.out.println("Compras Realizadas: ");
        for (Compra c : lista) {
            System.out.println("Compra: " + c.descripcion + " - $" + c.valor);
        }
        System.out.println("\n*******************************\n");
    }
    System.out.println("Saldo en tarjeta: " + saldo);
}

}

1 respuesta

¡Hola Christian, espero que estés bien!

Tu código para gestionar las compras con un límite de tarjeta se ve bastante bien organizado. Parece que estás intentando crear una aplicación que permita registrar compras hasta que el saldo de la tarjeta se agote o el usuario decida salir. Aquí hay algunos puntos que podrías considerar para mejorar o verificar:

  1. Manejo de entradas inválidas: Aunque ya tienes un manejo básico para entradas inválidas al decidir si continuar o no, podrías considerar manejar entradas inválidas para el valor de la compra también. Por ejemplo, si el usuario ingresa un valor no numérico, el programa podría lanzar una excepción. Puedes usar un bloque try-catch para manejar esto.

  2. Validación de entradas: Podrías agregar validaciones para asegurarte de que el valor de la compra no sea negativo, lo cual no tendría sentido en el contexto de una compra.

  3. Comentarios en el código: Aunque tu código es bastante claro, agregar comentarios puede ayudar a otros (o a ti mismo en el futuro) a entender rápidamente qué hace cada parte del código.

  4. Uso de constantes: En lugar de usar números mágicos como 0 y 1 para controlar el flujo del programa, podrías definir constantes con nombres significativos, como SALIR y CONTINUAR, para mejorar la legibilidad.

  5. Cierre del Scanner: No olvides cerrar el objeto Scanner al final del programa para liberar recursos. Puedes hacerlo con sc.close();.

Espero que estas sugerencias te sean útiles para mejorar tu proyecto. ¡Sigue adelante con tu aprendizaje en Java!

Espero haber ayudado y buenos estudios!