1

Hola estoy intentando realizar este código para una tarea pero me sigue dando el siguiente error

introducir la descripción de la imagen aquí

Estoy utilizando el compilador de netbeans (Si ya se que Eclipse es mejor pero me fuerzan a usar este compilador), El nombre del proyecto en Java es "Empleados" y el nombre de la main class también.

package Empleados;
/**
 *
 * @author pyuit
 */
public class Empleados {
    Integer SueldoM;
    Integer horasextra;
    Integer   TotalHE;
    Double isr;
 String     RFC;
 String Nombre;
String  Puesto;
Integer  hijos;
String casado;
 Double Pago;
 Integer PagoTotal;
     public void ingresar(Integer SBM,Integer HE,Integer THEM,Double ISR){
         //en este metodo se remplazan lo valores de sueldo base mensual, el pago por hora extra, el total de horas extras en el mes y el porcentaje de ISR.
         //SBM=sueldo base mensual
         //He=Pago por hora extra
         //THEM.total de horas extra en el mes
         //isr porcentaje de isr
         SBM=SueldoM;
         HE=horasextra;
         THEM=TotalHE;
         ISR=isr; 
     }   
void antes() //*Este método me permite calcular el pago total sumando 
    {              //*las horas extras y el sueldo base mensual
        Integer pagot;
        Integer hors;
        if(TotalHE>=0)
        {
            hors =TotalHE*horasextra;
            System.out.println("Pago por horas extra: "+hors);
            pagot = SueldoM + hors;
            System.out.println("Pago total: "+pagot);
            PagoTotal = pagot;
        }
        else
            System.out.println("Pago total: Los datos ingresados en Sueldos tienen un problema, revíselos, no pueden ser menores a cero");
}
public void Calcular (){
            //en este metodo se calcula el pago neto del trabajador
            //Pago neto= Sueldo mensual+horas extra -isr 
            //el isr disminuye si esta casado y tiene hijos
            if("0".equals(casado)){
                isr=isr-.2;
                 }
                if(hijos>0){
                    Double N;
                    N=hijos*.1;
                    isr=isr-N;
                }
        Integer P;
       
          Double por;
                P = (SueldoM + PagoTotal );
                por= P*isr;
                Pago= P-por;
        }
        void Mostrar(){
            //en este metodo se manda imprimir toda la informacion
            System.out.println("Nombre: "+Nombre);
            System.out.println("RFC: "+RFC);
            System.out.println("Puesto: "+Puesto);
            System.out.println("Sueldo base de Horas extras: "+PagoTotal);
            System.out.println("Importe a descontar por ISR: "+isr);
            System.out.println("Sueldo neto: "+Pago);
        }
    public static void main(String[] args) {
     //definir 3 objetos
     Empleados E1= new Empleados();
     E1.Nombre=("Manuel Torres FLores");
     E1.RFC=("JHAK67888");
     E1.Puesto=("Jefe");
     E1.casado=("1");
     E1.hijos=1;
    E1.ingresar(10000,900,9,0.25);
    E1.antes();
    E1.Calcular();
    E1.Mostrar();
    }
}
Roger Torné
  • 7,317
  • 12
  • 17
  • 31
El Rabioso
  • 19
  • 1
  • *Estoy utilizando el compilador de netbeans (Si ya se que Eclipse es mejor pero me fuerzan a usar este compilador)*... bueno, tanto netbeans como eclipse son IDEs, no compiladores, ya que es la propia máquina de java la que se encarga de esa parte. En cuanto a lo de que sea mejor o peor, eso siempre va a ser un poco subjetivo, Eclipse se usa sobre todo porque es gratuito y muy adaptable, pero eso no quiere decir que sea el mejor que existe. En cuanto al error, no se pueden utilizar objetos definidos pero no inicializados, es decir, que no tienen valor o valen NULL. – Benito-B Oct 03 '20 at 10:38
  • *ya se que Eclipse es mejor* Es altamente discutible. – Candid Moe Oct 04 '20 at 11:00

2 Answers2

0

Me dio risa el texto en ese idioma raro que le metiste jaja, tu problema es que estas usando los wrapper class de java en lugar de los datos primitivos de java como lo son int o double.

Estudiate las diferencias entre un wrapper class vs dato primitivo en java y en que caso se deben usar, en conlusion para resolver tu problemam cambia los tipos de datos de Integer a int y de Double a double

Saludos.

JGarnica
  • 1,477
  • 3
  • 11
  • 20
0

Tienes que inicializar tus variables Integer y Double a 0, de forma que no sean null. Cuando esas variables se van a sumar, lo primero que se hace es unboxing, es decir, convertir de Integer a int (o de Double a double). Para ello se invoca de manera automática el método .intValue() (o .doubleValue()) y, al ser tus variables null se da el NullPointerException.

Pablo Fradua
  • 3,488
  • 10
  • 20