Java - metodos que se repiten

 
Vista:

metodos que se repiten

Publicado por Alejandro Giraldo (2 intervenciones) el 13/02/2022 18:50:50
en una empresa se tienen varios empleados cada empleado con cedula, nombre, apellido, salario básico
mensual , año de nacimiento

Se requiere

-Calcular y mostrar la edad en años por cada empleado
-Calcular y mostrar el salario neto mensual de cada empleado
-calcular y mostrar la nomina mensual para toda la empresa

es que tengo un problema yo cree el vector de objetos con toda la información del empleado dentro de un for calculo
la edad el salario neto pongo al usuario que ingrese cuantos empleados tiene la empresa
me muestra los datos reales de los empleados de la empresa que digito el usuario pero a la hora de los calculos de edad en años y salario neto mensual solo me muestra el calculo del ultimo empleado registrado quien me ayuda
a encontrar el error

comparto el main


package Empresa_Datos;

import java.util.Scanner;
import javax.swing.JOptionPane;

public class main {
public static void main(String [] args){
Scanner entrada = new Scanner(System.in);
String cedula,nombre,apellido;
float SBM = 0,nomina = 0;
int ananc = 0,n_empleados;
Empresas empresas = new Empresas(nomina);

n_empleados = Integer.parseInt(JOptionPane.showInputDialog("Cuantos empleados tiene la empresa: "));
Empleados empleados[] = new Empleados[n_empleados];
for(int i=0; i<empleados.length; i++){

nombre = JOptionPane.showInputDialog("Empleado"+(i+1)+"\nDigite su nombre: ");
apellido = JOptionPane.showInputDialog("Digite su apellido: ");
cedula = JOptionPane.showInputDialog("Digite su cedula: ");
SBM = Float.parseFloat(JOptionPane.showInputDialog("Digite el salario basico mensual: "));
ananc = Integer.parseInt(JOptionPane.showInputDialog("Digite su año de nacimiento: "));
empleados[i] = new Empleados(cedula, nombre, apellido, SBM, ananc);

empleados[i].Calcular_edad(ananc);
empleados[i].calcular_salario_neto(SBM);
empresas.Calcular_nomina(SBM);

}
for(int i=0; i<empleados.length; i++){
System.out.println("\nInformacion del empleado "+(i+1)+empleados[i].toString());
System.out.print("\nLa edad del Empleado " + (i+1)+ " es " + empleados[i].Calcular_edad(ananc)+ " Años");
System.out.println("\nEl salario neto del empleado " + (i+1) + " es " + empleados[i].calcular_salario_neto(SBM));

}
System.out.println("\nLa nomina mensual de la empresa es: "+empresas.Calcular_nomina(SBM));
}
}
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

metodos que se repiten

Publicado por Kabuto (1381 intervenciones) el 13/02/2022 21:04:27
En esta línea muestras el calculo del salario neto, pero lo haces pasándole el valor de la variable SBM
1
System.out.println("\nEl salario neto del empleado " + (i+1) + " es " + empleados[i].calcular_salario_neto(SBM));

Esa variable, conserva el último valor que el usuario tecleó en el for anterior, así que a TODOS los empleados, les estás pasando el mismo "salario básico mensual" para este cálculo.
Por eso te parece que solo calcula el del último empleado.

Deberías cambiar el método calcular_salario_neto() para que no tenga que recibir el SBM entre paréntesis.
Se supone que cada empleado ya tiene un atributo con el valor SBM que le corresponde, así que ese método no necesita pedirlo entre paréntesis, puede cogerlo directamente del atributo.
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

metodos que se repiten

Publicado por Alejandro (2 intervenciones) el 14/02/2022 00:12:12
ok dale voy a mirar
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