Why does NullPointer give me error when checking data? [duplicate]

0
import java.util.Scanner;
import java.util.ArrayList;

    class Persona{
        private String nombre;
        private int id,edad;
        static Persona global = new Persona();
            public Persona(){}

            public Persona(String Nombre, int ID, int Edad){
                this.nombre = Nombre;
                this.id = ID;
                this.edad = Edad;
                }

            public static String getName(){
                return global.nombre;
                }

            public static int getId(){
                return global.id;
                }

            public static int getEdad(){
                return global.edad;
                }

        }

    class Trabajador extends Persona{
            static Trabajador tr = new Trabajador();
            private String tTrab, empresa;
            private int aExp;

                public Trabajador(){
                    super();
                    }

                public Trabajador(String Nombre, String tTrabajo, String Empresa, int ID, int Edad, int AExp){
                    super(Nombre, ID, Edad);
                    this.tTrab = tTrabajo;
                    this.empresa = Empresa;
                    this.aExp = AExp;
                    }

            public static int getaExp(){
                return tr.aExp;
                }

            public static String getEmpresa(){
                return tr.empresa;
                }

            public static String getTrabajo(){
                return tr.tTrab;
                }

        }

    class Estudiante extends Persona{
            String  Universidad;
            int sCurso;

                public Estudiante(){
                    super();
                    }

                public Estudiante(String Nombre, String Univ, int ID, int Edad, int sCurs){
                    super(Nombre, ID, Edad);
                    this.Universidad = Univ;
                    this.sCurso = sCurs;
                    }
        }

    class Ambas extends Persona{
            String  Universidad;
            int sCurso;
            String tTrab, empresa;
            int aExp;

                public Ambas(){
                    super();
                    }

                public Ambas(String Nombre, String tTrabajo, String Empresa, int ID, int Edad, int AExp, int sCurs, String Univ){
                    super(Nombre, ID, Edad);
                    this.Universidad = Univ;
                    this.sCurso = sCurs;
                    this.tTrab = tTrabajo;
                    this.empresa = Empresa;
                    this.aExp = AExp;
                    }
        }


public class Test{
    static  ArrayList<Trabajador> Trabajadores = new ArrayList<Trabajador>();
    public  ArrayList<Estudiante> Estudiantes = new ArrayList<Estudiante>();
    public  ArrayList<Ambas> Ambos = new ArrayList<Ambas>();


        int menu(){
            Scanner inp = new Scanner(System.in);
            System.out.println("1.- INGRESAR  PERSONAS");
            System.out.println("2.- VERIFICAR DATOS");
            System.out.println("3.- MODIFICAR PERSONAS");
            System.out.println("0.- Salir");
            int m = inp.nextInt();
            return m;
            }

         void ingresar(){
            Scanner inp = new Scanner(System.in);
            System.out.print("INGRESE LA OCUPACION DE LA PERSONA (Trabajador, Estudiante, Ambos): ");
            String tTrabajo = inp.nextLine();
            switch(tTrabajo){
                case "Trabajador":
                    char r = 'S';
                    String tTrab, empresa, name;
                    int aExp, id, edad;
                    do{
                        System.out.print("INGRESE EL NOMBRE: ");
                        name = inp.nextLine();
                        System.out.print("INGRESE EL NOMBRE DE LA EMPRESA: ");
                        empresa = inp.nextLine();
                        System.out.print("INGRESE EL AREA DE TRABAJO: ");
                        tTrab = inp.nextLine();
                        System.out.print("INGRESE LA EDAD: ");
                        edad = inp.nextInt();
                        System.out.print("INGRESE EL ID: ");
                        id = inp.nextInt();
                        System.out.print("INGRESE LOS AÑOS DE EXPERIENCIA: ");
                        aExp = inp.nextInt();
                        Trabajador empleado = new Trabajador(name,tTrab,empresa,id,edad,aExp);
                        Trabajadores.add(empleado);
                        }while(r != 'S');
                    break;

                case "Estudiante":
                    break;

                case "Ambos":
                    break;
            }
        }

        void verificar(){
            Scanner inp = new Scanner(System.in);
            System.out.print("INGRESE LA OCUPACION DE LA PERSONA (Trabajador, Estudiante, Ambos): ");
            String tTrabajo = inp.nextLine();
            switch(tTrabajo){
                case "Trabajador":
                        String name;
                        System.out.print("INGRESE EL NOMBRE: ");
                        name = inp.nextLine();
                    for(Trabajador temp : Trabajadores){
                        if (Trabajador.getName().equals(name)){
                            System.out.println("NOMBRE: "+Trabajador.getName());
                            System.out.println("ID: "+Trabajador.getId());
                            System.out.println("Edad: "+Trabajador.getEdad());
                            System.out.println("Trabajo: "+Trabajador.getTrabajo());
                            System.out.println("AÑOS DE EXPERIENCIA: "+Trabajador.getaExp());
                            System.out.println("EMPRESA: "+Trabajador.getEmpresa());
                            }
                        }
                    break;

                case "Estudiante":
                    break;

                case "Ambos":
                    break;
            }
            }

    public static void main (String[] args){
    Test tst = new Test();


            int x;
            do{
                x = tst.menu();
                switch(x){
                    case 1:
                        tst.ingresar();
                    break;//Break Case 1 Switch x

                    case 2:
                        tst.verificar();
                    break;

                    case 3:
                        //modificar();
                    break;
                    }//Fin Switch
            }while(x != 0); //Fin Do


    }//Fin Main
}//Fin Class
    
asked by Luis Consuegra 03.07.2018 в 00:00
source

1 answer

0

I tried to stop instantiating each class within itself and making its variables no longer 'static' and it worked well. Also in the 'for' cycle that is within the 'verify ()' method you should use the name of the instance "temp" instead of the name of the class 'Worker'.

    
answered by 05.07.2018 / 23:24
source