Java - Bonificación de empleados según antigüedad

 
Vista:
sin imagen de perfil
Val: 66
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Osvaldo (60 intervenciones) el 07/11/2020 19:14:42
Vuelvo a publicar sobre este asunto de trabajo de JAVA. Utilizo el botón </> código.Por favor necesito sus aportes y criticas sobre mi resolución. Desde ya muchas gracias.



/* Elaborar un programa que permita al operador ingresar los siguientes datos, correspondientes a los empleados de una empresa.
Código de Empleado (ENTER p/finaliza)
Antigüedad (>0)
Sueldo (>= 500000 y <= 5000000)
Hacer un proceso que permita calcular e imprimir el Código y el IMPORTE DE BONIFICACIÓN, para cada empleado cuya antigüedad
sea superior a 4. El Importe de Bonificación se calcula aplicándole un porcentaje del 2% al Sueldo por cada 3 años de Antigüedad.
Al final del proceso imprimir el Código del empleado que tiene el Mayor Importe de Bonificación, junto al importe
Bonificación que le corresponde, además de la cantidad de empleados que fueron beneficiados y el monto total de las
bonificaciones.
Ejemplos: Si ha trabajado 7 años, el Porcentaje para la bonificación es 4%
Si ha trabajado 11 años, el Porcentaje para la bonificación es 6%
Si ha trabajado 5 años, el Porcentaje para la bonificación es 2%. */





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package bonificacion;
 
import java.util.Scanner;
 
public class Bonificacion {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int CodEmpleado = 0;
        int Antiguedad = 0;
        int Sueldo = 0;
        double Bonificacion = 0.0;
        int Importe = 0;
        int MayorImporte = 0;
        int Cantidad_Beneficiados = 0;
        int MontoTotal = 0;
        while (CodEmpleado != 0) {
            if (Antiguedad > 0) {
                if (Sueldo >= 500000 && Sueldo <= 5000000) {
                    if (Antiguedad > 4) {
                        CodEmpleado = sc.nextInt();
                        Antiguedad = sc.nextInt();
                        Sueldo = sc.nextInt();
                        Bonificacion = sc.nextDouble();
                        Importe = sc.nextInt();
                        MayorImporte = sc.nextInt();
                        Cantidad_Beneficiados = sc.nextInt();
                        MontoTotal = sc.nextInt();
                        Cantidad_Beneficiados = (Cantidad_Beneficiados + 1);
                    }
                    if (Antiguedad == 5) {
                        Bonificacion = (Bonificacion * 0.02);
                    } else {
                        if (Antiguedad == 7) {
                            Bonificacion = (Bonificacion * 0.04);
                        } else {
                            if (Antiguedad == 11) {
                                Bonificacion = (Bonificacion * 0.06);
                            }
                            MontoTotal = (MontoTotal + Importe);
                        }
                        if (Bonificacion > MayorImporte);
                        System.out.print("Mayor Importe:" + MayorImporte);
                        System.out.print("Importe Correspondiente:" + Importe);
                        System.out.print("Cantidad Empleados Beneficiados:" + Cantidad_Beneficiados);
                        System.out.print("Monto Total de Bonificaciones:" + MontoTotal);
                    }
                }
            }
        }
 
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Billy Joel (875 intervenciones) el 09/11/2020 02:11:33
Mis primeras recomendaciones es que los nombres de las variables y objetos empiezan con letras minusculas. Los nombres de las Clases empiezan con letras Mayusculas. Esto es una convesión de los programadores vamos no es nada malo, solo que cuando veo mayusculas por ahí me quedo loco.

Deberías imprimir un poco, así el usuario puede saber que es lo que está insertando
1
2
3
4
5
6
7
8
CodEmpleado = sc.nextInt();
Antiguedad = sc.nextInt();
Sueldo = sc.nextInt();
Bonificacion = sc.nextDouble();
Importe = sc.nextInt();
MayorImporte = sc.nextInt();
Cantidad_Beneficiados = sc.nextInt();
MontoTotal = sc.nextInt();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Billy Joel (875 intervenciones) el 09/11/2020 03:32:40
Mis recomendacioines para ti es que trates de ir plasmando las variables en un orden que te permita utilizarlas de la mejor forma.
Leer el problema unas dos o tres veces hasta que logres comprender lo que te piden.

El problema lo resolví así:
Primero hice una clase Empleado con las propiedades solicitadas (código, antigüedad, sueldo y bonificación).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class Empleado {
 
    private int codigo;
    private int antiguedad;
    private double sueldo;
    private double bonificacion;
 
    public Empleado(int codigo, int antiguedad, double sueldo, double bonificacion) {
        this.codigo = codigo;
        this.antiguedad = antiguedad;
        this.sueldo = sueldo;
        this.bonificacion = bonificacion;
    }
 
    @Override
    public String toString() {
        return "Codigo: " + codigo
                + "\nAntiguedad: " + antiguedad
                + "\nSueldo: " + sueldo
                + "\nBonificación: " + bonificacion;
    }
 
    /**
     * @return the codigo
     */
    public int getCodigo() {
        return codigo;
    }
 
    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }
 
    /**
     * @return the antiguedad
     */
    public int getAntiguedad() {
        return antiguedad;
    }
 
    /**
     * @param antiguedad the antiguedad to set
     */
    public void setAntiguedad(int antiguedad) {
        this.antiguedad = antiguedad;
    }
 
    /**
     * @return the sueldo
     */
    public double getSueldo() {
        return sueldo;
    }
 
    /**
     * @param sueldo the sueldo to set
     */
    public void setSueldo(double sueldo) {
        this.sueldo = sueldo;
    }
 
    /**
     * @return the bonificacion
     */
    public double getBonificacion() {
        return bonificacion;
    }
 
    /**
     * @param bonificacion the bonificacion to set
     */
    public void setBonificacion(double bonificacion) {
        this.bonificacion = bonificacion;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Billy Joel (875 intervenciones) el 09/11/2020 03:38:58
En la clase Bonificaciones he rescatado parte de tu código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class Bonificaciones {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int codigo;
        int cantidadBonificiados = 0;
        int antiguedad;
        int sueldo;
        double bonificacion;
        double bonificacionTotal = 0;
        Empleado mayorImporte;
        double montoTotal = 0.00;
        List<Empleado> empleados = new ArrayList();
        do {
            System.out.print("Introduzca 0 para terminar, de otro modo introduzca el codigo del empleado: ");
            codigo = sc.nextInt();
            if (codigo != 0) {
                System.out.print("Introduzca la antiguedad del empleado: ");
                antiguedad = sc.nextInt();
                System.out.print("Introduzca el sueldo del empleado: ");
                sueldo = sc.nextInt();
                bonificacion = 0.00;
                if (sueldo >= 500000 && sueldo <= 5000000 && antiguedad > 4) {
                    double porcentaje = 0.00;
                    for (int i = 0; i < antiguedad; i = i + 3) {
                        porcentaje = porcentaje + 0.02;
                    }
                    bonificacion = sueldo * porcentaje;
                    bonificacionTotal += bonificacion;
                    cantidadBonificiados++;
                }
                empleados.add(new Empleado(codigo, antiguedad, sueldo, bonificacion));
            }
        } while (codigo != 0);
        mayorImporte = empleados.get(0);
        for (Empleado e : empleados) {
            montoTotal += e.getSueldo() + e.getBonificacion();
            if (e.getSueldo() + e.getBonificacion() > mayorImporte.getSueldo() + mayorImporte.getBonificacion()) {
                mayorImporte = e;
            }
            System.out.println(e.toString() + "\n");
        }
 
        System.out.println("El empleado con mayor importe es:\n"
                + mayorImporte.toString()
                + "\nEl monto total: " + montoTotal
                + "\nCantidad de bonificados: " + cantidadBonificiados
                + "\nTotal en bonificación: " + bonificacionTotal
        );
    }
}

Espero lo puedas entender, si necesitas mas ayuda solo grita
Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 66
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Osvaldo (60 intervenciones) el 09/11/2020 20:10:53
Eternamente agradecido por su ayuda. ¿Cual es la función de @Override? ¿Para que lo utilizo en la codificación? También deseo saber sobre ArrayList(); que usted lo utilizo, deseo saber la función de ArrayList();. ¿Es posible poder realizar este trabajo sin usar Array/Vector?. Desde ya muchas gracias. Deseo saber su respuesta sobre esos puntos que pregunte por favor. Éxitos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Billy Joel (875 intervenciones) el 09/11/2020 21:14:20
@Override lo pone el ide (netbeans) lo que indica es que el método ha sido sobre escrito (se llama igual al que tiene la clase padre). En Java todas las clases decienden (son hijas) de la clase Object y el método toString es un método de la clase Object.
Puedes colocarlo o no, pero al ponerlo netbeans me marca el códgio verde, osea que está bien.

Realizar el trabajo sin usar colecciones como List o Vector. Si, si es posible, pero tendrías que saber de ante mano cuantos elementos tendrá el arreglo de empleados.
Las colecciones o estructuras de datos como List o Vector te permiten crecer en la medida que le agregas mas objetos.
Por ejemplo en el programa se piden datos de empleados hasta que se introduzca el código empleado igual a cero.
Partiendo de esa premisa el programa no sabe cuantos empleados son hasta que se introduzca el código de empleado 0.
Si en lugar de List o Vector quieres utilizar un array simple de empleados entonces necesitas saber la cantidad de empleados para poder inicializar tu arreglo de empleados.

Ojo yo utilicé tu lógica y tu código en lo mas posible.

PD: Acá te dejo mas sobre List

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 66
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Osvaldo (60 intervenciones) el 09/11/2020 21:47:54
Eternamente agradecido. Éxitos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 66
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Osvaldo (60 intervenciones) el 02/12/2020 21:36:25
Hola ¿Como esta? Le escribo nuevamente para realizarle la consulta sobre el código. ¿La clase Bonificación hereda de la clase Empleado?. Espero su respuesta que me ayudara mucho. Desde ya muchas gracias. Éxitos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Bonificación de empleados según antigüedad

Publicado por Billy Joel (875 intervenciones) el 02/12/2020 23:03:26
No. La clase Bonificación utiliza objetos de la clase Empleado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar