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

Desafio de Compras

public class Compra {

private String description;
private double Precio;

public Compra(String description, double precio) {
    this.description = description;
    Precio = precio;
}

public String getDescription() {
    return description;
}

public double getPrecio() {
    return Precio;
}


@Override
public String toString() {
    return getDescription() + " - " + getPrecio();
}

}

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

public class Principal {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int opcion = 1;
    int listaNumero = 0;

    System.out.println("Escribe el Limite de la Tarjeta");
    double limiteTarjeta = scan.nextDouble();
    scan.nextLine();

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


    while (opcion == 1){
        System.out.println("Escriba la Descripton de la Compra");
        String compra = scan.nextLine();
        System.out.println("Escriba el Valor de la Compra:");
        double precio = scan.nextDouble();
        if (limiteTarjeta > precio){
            Compra Compras = new Compra(compra, precio);
            listaCompras.add(Compras);
            limiteTarjeta = limiteTarjeta - listaCompras.get(listaNumero).getPrecio();
            System.out.println("Compra Realizada con Exito");
            listaNumero++;
        } else {
            System.out.println("Compra excede el límite disponible.");
            break;
        }
        System.out.println("Escriba 0 para Salir o 1 para Continuar");
        opcion = scan.nextInt();
        scan.nextLine(); // limpiar el buffer

    }
    System.out.println("*******************\n\nLista de compras realizadas: \n\n**********************");
    listaCompras.sort(Comparator.comparing(Compra::getPrecio));
    for (Compra c : listaCompras) {
        System.out.println(c.toString());
    }

    System.out.println("Límite restante: $" + limiteTarjeta);
}

}
1 respuesta

¡Hola Alan, espero que estés bien!

Tu código se ve bastante bien y parece que está cumpliendo con los requisitos del desafío. Sin embargo, hay un pequeño detalle que podrías considerar mejorar. Actualmente, el programa solo permite realizar una compra si el precio de la compra es menor que el límite disponible. Esto significa que si el precio es exactamente igual al límite, la compra no se realizará. Si deseas permitir que el usuario gaste hasta el último centavo del límite, podrías ajustar la condición en el if de la siguiente manera:

if (limiteTarjeta >= precio) {
    // Permitir la compra
}

Con este cambio, el usuario podrá realizar una compra que agote completamente el límite disponible.

Además, asegúrate de que el programa maneje correctamente la entrada del usuario, especialmente cuando se trata de números decimales, ya que esto podría causar excepciones si no se ingresa correctamente.

Espero que esto te ayude a mejorar tu aplicación de compras. ¡Bons estudios!