Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

ejercicio IR

public class TestIr {

public static void main(String[] args) {


      double salario = 3300.0;

      if (salario >= 1900.00 && salario <=2800.00) {
          System.out.println("El IR es de 7.5 % " + "y el monto de deduccion es 142");
      }

      else if(salario >= 2800.01 && salario <= 3751.0) {
         System.out.println("El IR es del 15% " + " y el monto de deduccion es de 350");
      }

      else if(salario >= 3751.01 && salario <= 4664.00){
          System.out.println("El IR ES DE 22.5 % " + " y su deducción es de 636");

      }


}

}

2 respuestas

Hola Oscar;

Excelente, muchas gracias por compartir con nosotros tu solución. Como siempre existe espacio para la mejora déjame proponerte una solución un tanto, diferente:

public static void main(String[] args) {
    double salario = 3300.0;
    double porcentajeImpuesto = 0.0;
    double deduccion = 0.0;

    if (salario >= 1900.00 && salario <=2800.00) {
        porcentajeImpuesto = 7.5;
        deduccion = 142.00;
    } else if(salario >= 2800.01 && salario <= 3751.0) {
        porcentajeImpuesto = 15.0;
        deduccion = 350.00;
    } else if(salario >= 3751.01 && salario <= 4664.00){
        porcentajeImpuesto = 22.5;
        deduccion = 636.00;
    } else {
        System.out.println("El salario ingresado no corresponde a ninguna categoría de impuestos.");
        return;
    }

    double impuestoCalculado = salario * (porcentajeImpuesto / 100.0);
    double salarioNeto = salario - impuestoCalculado + deduccion;

    System.out.println("Para un salario de " + salario + ":");
    System.out.println("El IR es del " + porcentajeImpuesto + "% y el monto de deducción es de $" + deduccion);
    System.out.println("El monto del impuesto a pagar es de $" + impuestoCalculado);
    System.out.println("El salario neto es de $" + salarioNeto);
}

En esta versión del código, se han hecho varias mejoras para hacerlo más eficiente y legible:

  • Se han definido variables para almacenar el porcentaje de impuesto y la cantidad de deducción correspondiente a cada categoría de salario, de esta manera el código es más fácil de entender y mantener.
  • Se ha añadido una validación adicional para verificar si el salario ingresado está dentro de alguna de las categorías de impuestos, y si no es así, el programa termina su ejecución.
  • Se han calculado los valores de impuesto y salario neto utilizando las variables definidas previamente, para evitar repetir cálculos innecesarios.
  • Se han agregado mensajes de salida para mostrar los resultados de manera clara y detallada.

Con estas mejoras, el código es más eficiente y legible, lo que facilita su mantenimiento y comprensión.

Buenos dias ,esta muy bien el codigo y me gusta la opción de implementar las variables para tener menos systemOut, ademas de que esta muy lejible. Ahora tengo una consulta: En la mayoria de las resoluciones todos vuelven a usar un if doble, es decir el primer if me verifica que el salario es mayor a 1900 y menor a 2800, entonces en el siguiente if solo habria que preguntar si e menor a 3751, xq a mi entender si no entro en la parte falsa es porque es mayor a 2800. Comparto mi codigo para que se entienda mejor la pregunta.

public class testIR {

        public static void main(String[] args) {

double salario = 3300.0;
            if(salario > 1900.00 && salario <2800.00) {
                System.out.println("El IR que le correponde es de 7,5%");
                System.out.println("Puede deducir 142");
            }else {
                 if(salario < 3751.00) {
                     System.out.println("El IR que le correponde es de 15%");
                     System.out.println("Puede deducir 350");
                 }else {
                     if(salario < 4664.00) {
                         System.out.println("El IR que le correponde es de 22,5%");
                         System.out.println("Puede deducir 636");

                 }
            }

        }