0

Me sale el error java.lang.NullPointerException , pero no entiendo el por que , cuando puse el metodo en static ya no me salia el error pero no me aumentaba el % igualmente , no acabo de enterder cual es el error si es la inicializacion o otra cosa y "me refiero al Metodo subeSueldo de la clase Empleado"

 public static void main(String arg[]) {

        Empleado [] misEmpleados = new Empleado[3];

        String nombre;
        String sueldo = null;
        String año,mes,dia;
        String Empleado ;
        String porcentaje;



    for (Empleado e:misEmpleados ) {

        Empleado = JOptionPane.showInputDialog("Empleado o Jefe : \n Jefe : J \n Empleado : E");
        nombre = JOptionPane.showInputDialog("Ingrese el nombre del empleado  : ");
        sueldo = JOptionPane.showInputDialog("Ingrese el Sueldo : ");
        año = JOptionPane.showInputDialog("El año");
        mes = JOptionPane.showInputDialog("El mes");
        dia = JOptionPane.showInputDialog("El dia");
        porcentaje = JOptionPane.showInputDialog("Ingrese el % del sueldo que desea Incrimentar : ");

        double sueld = Double.parseDouble(sueldo);
        int añoInt= Integer.parseInt(año);
        int mesInt = Integer.parseInt(mes);
        int diaInt = Integer.parseInt(dia);
        double porc = Double.parseDouble(porcentaje);

        e.subeSueldo(porc);// Error <---------------------------

        if (Empleado.equalsIgnoreCase("E"))
        {

         e = new Empleado(nombre,sueld,añoInt,mesInt,diaInt);

            System.out.println(e.dameDatosEmpleado());
                    }

        if (Empleado.equalsIgnoreCase("J"))
        {

         e = new Jefatura(nombre,sueld,añoInt,mesInt,diaInt);
         Jefatura.asignarIncentivo(2570);

         System.out.println("El nombre del Jefe es : "+ e.dameNombre() + "\n" +
                            "El sueldo el Jefe es : " + e.dameSueldo() + "\n" +
                            "Alta es : " + e.dameFechaContrato()
                 );

                   }





    }



}

//Clase Padre Empleado

  private String nombre;
    private  double sueldo;
    private Date altaContrato;
    private static int ID =100;



    public Empleado(String nom, double sue,int agno,int mes, int dia){

        nombre = nom;
        sueldo = sue;
        GregorianCalendar calendario = new GregorianCalendar(agno, mes-1,dia);
        altaContrato = calendario.getTime();




    }

    public   void subeSueldo(double porcen  ){

     sueldo *=(porcen/100)+1;

}

    public String dameDatosEmpleado(){

            ID++;

        return "Nombre del Empleado : " + nombre + "\n" + "Sueldo del Empleado : " + sueldo + "\n"+"Fecha de Alta : " + altaContrato + "\n" + "ID del Empelado : " + "E" +ID;
    }

    public  String dameNombre(){


        return nombre;
    }



    public Date dameFechaContrato(){

        return altaContrato;
    }



      public  double dameSueldo(){

    return sueldo;
     }

//Clase Hija Jefatura

 private static double incentivo;
private static int ID=100;

public Jefatura(String nombre,double sueldo,int año, int mes , int dia){

    super(nombre,sueldo,año,mes,dia);


}

public  static void asignarIncentivo(double b){

    incentivo = b;
}


public double dameSueldo(){

    double sueldoJefe = super.dameSueldo();

    return sueldoJefe+incentivo;

}

public  String dameNombre(){
    ID++;
    String nombreJefe = super.dameNombre();

    return nombreJefe + "\n" + "ID del Jefe : "+ "J"+ID;
}
introducir el código aquí
introducir el código aquí

1 Answers1

0

El problema es que intentas llamar a subeSueldo de null(e). La referencia misEmpleados se inicializa como [null, null, null], por eso es que obtienes el NullPointerException.

beta3000
  • 61
  • 4
  • 1
    esta pregunta ya tiene una respuesta muy útil y aceptada por la comunidad, hay que usar la zona de comentarios para indicarle al OP que revise a detalle la pregunta/respuesta que ya existe –  Nov 02 '18 at 22:43
  • 1
    muchas gracias #beta3000 , no se como responder en esta pagina , pero gracias por las respuesta pude resolverlo , lo unico q tenia q hacer era declararlo debajo despues de que se llenen los datos , – Junior Flores Alcantara Nov 02 '18 at 23:13