Condición 3: Salario de un trabajador

Este problema también lo podrán encontrar en la sección de diagramas de flujo, el problema es el siguiente.

 

Problema: Calcular el salario neto semanal de un trabajador en función de horas trabajadas y la tasa de impuestos.

 

1) Las primeras 35 horas se pagan a tarifa normal.

2) Las horas que pasan de 35 se pagan 1.5 veces la tarifa normal.

3) Las tasas de impuestos son a:

    a) Los primeros $300 son libres de impuestos.

    b) Los siguientes $200 tienen un 15% de impuestos.

    c) El resto tiene un 25% de impuestos.

 

Se desea visualizar el nombre del trabajador, el salario bruto, los impuestos y el salario neto.

 

Salario trabajador

Para este problema nos pide capturar cadenas de tipo entero (Horas), double (salario) y cadenas (Nombre del trabajor), esta vez usaremos interfaz gráfica Swing para capturar los datos.

 

Crearemos una nueva clase dentro de nuestro paquete Condiciones que se llame Salario, habilitar la casilla para generar el método main.

 

Pedimos los datos: Nombre, horas trabajadas y salario por hora y los asignamos a las variables correspondientes, es necesario ver convertir tipo de datos para entender mejor el codigo.

 

String nombre=JOptionPane.showInputDialog("Nombre del trabajador");
int ht=Integer.parseInt(JOptionPane.showInputDialog("Horas trabajadas"));
double ph=Double.parseDouble(JOptionPane.showInputDialog("Pago por hora"));

 

Una vez obtenidas las tres variables necesitamos conocer el salario bruto, para ello hacemos:

 

double sb=0,imp=0,sn=0,aux;

 //Para conocer el salario bruto
        if(ht>35){
            double tn=35*ph;
            aux=ht-35;
            double sx=aux*(ph*1.5);
            sb=sx+tn;
        }else{
            sb=ht*ph;
        }

 

El código indica que si las horas trabajadas es mayor a 35 se saca una tarifa neta con las primeras 35 horas, y las horas que pasan de 35 se pagan a 1.5 veces más, para el sueldo bruto se suman estos valores.

En caso de que las horas trabajadas sean menor a 35 horas, indica que no habrá aumento en el pago de horas, simplemente se multiplica las horas trabajadas por el pago por hora.

 

Observamos que al inicio se declararon 4 variables más, esto es para poderlas utilizar fuera de los bloques de código, por ejemplo la variable tn que se declara dentro de la parte verdadera del if, solo se puede usar en ese bloque de código, por lo tanto las variabes sb, sn,imp y aux que se manejan fuera de un bloque de código, se deben declarar fuera de un bloque de código.

 

Después de conocer el salario bruto, el problema nos pide conocer los impuestos totales, para esto programamos:

 

 //Para conocer los impuestos
        if(sb>300){
            aux=sb-300;
            if(aux>200){
                double impx=200*0.15;
                double impy=sb-500;
                impy=impy*0.25;
                imp=impx+impy;
                sn=sb-imp;
            }else{
                imp=aux*0.15;
                sn=sb-imp;
            }
        }else{
            imp=0;
            sn=sb-imp;
        }

 

Si el sueldo bruto es meno a 300 no hay impuestos, si es mayor de 300 pero menor a 500 el impuesto será del 15%, en caso de que sea mayor que 500 el impuesto se calcula por 2 niveles: nivel 1 - de 300 a 500 con el 15%, nivel 2 - mayor a 500 con el 25% de impuesto (Nótese que si llega al nivel 2, el impuesto del nivel 1 siempre serán 30).

 

Ahora solo falta imprimir los datos:

 

JOptionPane.showMessageDialog(null,"Trabajador: "+nombre+", Sueldo bruto: "+sb+", Impuestos: "+imp+", Sueldo neto: "+sn);

 

Programa en ejecución

Nombre trabajador
Horas Trabajadas
Pago por hora
Resultados

Código completo utilizado

package pqtCondiciones;

import javax.swing.JOptionPane;

public class Salario {

    public static void main(String[] args) {
        String nombre=JOptionPane.showInputDialog("Nombre del trabajador");
        int ht=Integer.parseInt(JOptionPane.showInputDialog("Horas trabajadas"));
        double ph=Double.parseDouble(JOptionPane.showInputDialog("Pago por hora"));
        double sb=0,imp=0,sn=0,aux;
        //Para conocer el salario bruto
        if(ht>35){
            double tn=35*ph;
            aux=ht-35;
            double sx=aux*(ph*1.5);
            sb=sx+tn;
        }else{
            sb=ht*ph;
        }
        //Para conocer los impuestos
        if(sb>300){
            aux=sb-300;
            if(aux>200){
                double impx=200*0.15;
                double impy=sb-500;
                impy=impy*0.25;
                imp=impx+impy;
                sn=sb-imp;
            }else{
                imp=aux*0.15;
                sn=sb-imp;
            }
        }else{
            imp=0;
            sn=sb-imp;
        }
        
        JOptionPane.showMessageDialog(null,"Trabajador: "+nombre+", Sueldo bruto: "+sb+", Impuestos: "+imp+", Sueldo neto: "+sn);
    }

}