Suma de Descuentos en Java [SOLUCIONADO]

El dominio de Java no está completo hasta que puedes aplicar lógicas de negocios como la aplicación de una suma de descuentos. Este aspecto a veces complicado es vital para la mayoría de las aplicaciones, especialmente aquellas orientadas a la venta de productos o servicios.

Imaginemos que estamos desarrollando una aplicación para una tienda que tiene diferentes tipos de descuentos que se aplican a los productos. Se debe tener en cuenta que se podrían aplicar varios descuentos a un solo producto y el orden importa.

Conceptos Básicos

Antes de abordar la parte de codificación, exploremos algunos conceptos. Lo más importante a tener en cuenta al aplicar varios descuentos en un producto es el orden. Siempre se debe aplicar el descuento más grande primero y luego el próximo más grande y así sucesivamente. La razón es simple: queremos dar al cliente el mayor descuento posible.

Por ejemplo, si tenemos dos descuentos del 10% y 20% para aplicar en un producto de $500, el mayor beneficio para el cliente se obtendría aplicando primero el descuento del 20% hasta obtener $400, luego aplicando el 10% en $400 para obtener el precio final de $360. Si se hace al revés, el precio final sería superior a $360.

Ahora que hemos comprendido esto, podemos empezar a codificar en Java.

Manejo de Descuentos en Java

Diseñaremos una estrategia de descuento que tome una lista de descuentos y los aplique al precio de un producto. Así, obtenemos el precio final después de aplicar todos los descuentos.

        import java.math.BigDecimal;
        import java.util.List;

        public class SumaDescuentos {

          public static BigDecimal applyDiscounts(List<BigDecimal> discounts, BigDecimal price) {
        
            for (BigDecimal discount : discounts) {
               price = price.subtract(price.multiply(discount));
            }
        
            return price;
          }
        }
    

El código anterior toma una lista de descuentos y los aplica al precio del producto. Asume que el descuento se da como un decimal donde 0.1 representa un 10% de descuento. La lógica para aplicar cada descuento se encuentra en la línea “price = price.subtract(price.multiply(discount));”, donde se resta el descuento del precio.

Tratando con múltiples descuentos

Cuando se tienen multiples descuentos a aplicar, es importante ordenarlos de mayor a menor para maximizar el beneficio del cliente. En Java, podemos utilizar el método sort de la interfaz List, como se muestra en el código siguiente:

        import java.util.Collections;

        // ...
        
        Collections.sort(discounts, Collections.reverseOrder());
        BigDecimal finalPrice = SumaDescuentos.applyDiscounts(discounts, price);
    

El método Collections.sort() ordena la lista de descuentos en orden ascendente, y luego el método Collections.reverseOrder() invierte el orden para tener los descuentos en orden descendente. Luego, con la lista de descuentos ordenada, podemos aplicarlos al precio inicial y obtener el precio final.

Consideraciones Finales

Gracias a las potentes funciones de Java para manipular listas y hacer cálculos aritméticos, es relativamente fácil implementar una lógica de descuento en cualquier aplicación. Asegúrese de entender bien la lógica de negocios antes de codificar y siga probando constantemente su trabajo para garantizar que los descuentos se apliquen correctamente.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad