Foros del Web » Programación para mayores de 30 ;) » Java »

Error java nullpointer exception

Estas en el tema de Error java nullpointer exception en el foro de Java en Foros del Web. Buenas.. Tengo un problema con este codigo, ya he leido muchas ayudas sobre este error pero no logro salir del problema. Codigo donde sale el ...
  #1 (permalink)  
Antiguo 04/09/2015, 21:52
 
Fecha de Ingreso: septiembre-2015
Mensajes: 2
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Error java nullpointer exception

Buenas..
Tengo un problema con este codigo, ya he leido muchas ayudas sobre este error pero no logro salir del problema.
Codigo donde sale el error
public class gestionDeEmpleados{

void contratarEmp(){
Empleado emp= new Empleado();

System.out.println("Direccion: Calle?");
Df=cin.nextLine();
emp.direcion.setCalle(Df); // error javaNullpointerException
}
}

Al querer asignar valor a calle me da el error. ahora si quiero asignar a otra que no sea de composicion, si lo deja.


System.out.println("Nombre?");
nombre=cin.nextLine();
emp.setNombre(nombre); // error null pointerexception


Mi clase Empleado hereda de una clase persona y esta tiene un atributo private Direccion direcion. En la clase direccion esta mi variable calle. Asi:

public class Empleado extends Persona{

public Empleado(){}
}

public class Persona{

Private String nombre;
private Direccion direccion;
public Persona(){}
}

Public Direccion{
private String calle;
public Direccion(){}

public setCalle(String calle){
this.Calle=calle;
}
}
Alguien que me auxilie en esto..??
  #2 (permalink)  
Antiguo 05/09/2015, 01:11
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Error java nullpointer exception

Hola:

En el primer nullpointer, haces new Empleado y usas emp.direccion.... ¿le has dado valor a direccion en algún lado?. El constructor de Empleado no parece hacerlo (ni el de Persona). Despueés de new Empleado, tampoco.

El segundo nullpointer. Haces

Empleado emp= new Empleado();

en el metodo contratarEmp(). Al poner delante la palabra Empleado que te he puesto en cursiva, estás declarando la variable emp ahí, en esa línea, dentro del método, por lo que es local al método y en cuanto salgas del método, la pierdes. La línea en la que te da nullpointer emp.setNombre(nombre); está usando una variable "emp" que estarás declarando en otro sitio (¿quizás como atributo de la clase?) y que posiblemente no tenga valor ninguno (no le hayas hecho new Empleado() en ningún momento).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 05/09/2015, 12:57
 
Fecha de Ingreso: septiembre-2015
Mensajes: 2
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Error java nullpointer exception

Gracias por la respuesta, pero creo que me equivoque, no hay segundo null pointer. Este codigo en el metodo contratarEmpleado si lo ejecuta, No da error.

System.out.println("Nombre?");
nombre=cin.nextLine();
emp.setNombre(nombre);

y si quiero obtener lo que guarde. sout(emp.getNombre()) . Si me lo imprime, sin error.

el error es en la linea o las lineas que tengo

emp.direccion.setCalle("nombre calle"); ó emp.direccion.setNumExterior(2545);

Direccion es una clase. Empleado , según me explicaron unos amigos, se compone de esta,

public class Empleado{
Direccion direccion;
}

no entiendo lo que dices de que donde le doy valor a Direccion. pero si te refieres a que si esta en un constructor si lo esta, en la clase persona esta declarada

public class Persona{
Direccion direcion;

Persona(Direccion direcion){
this.direcion=direcion;
}

y en clase Direccion todas las variables(calle, numExterior, etc) estan tambien declaradas y en constructor.

Por otro lado si quiero obtener lo que hay ahi me da null

emp.direccion.getCalle(); // me retorna null, exactamente porque no tiene nada lo se, pero no tiene nada porque no me deja asignarle.

No se, si me explico.
  #4 (permalink)  
Antiguo 05/09/2015, 14:24
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Error java nullpointer exception

Hola:

Cuando declaras

Direccion direcion;

direccion vale null y si intentas llamar a cualquier metodo de direccion, dará NullPointerException, no se puede llamar a un método de null. Por ello, aparte de declaralo, hay que darle un valor.

Si llamas a new Empleado() (es a lo que llamabas en el código del primer post), ese constructor está vacío. Por defecto, java llamará también al constructor Persona() que es la clase padre. Si en ese constructor tampoco das un valor a direccion, seguirá valiendo null.

Antes de intenter empl.direccion.cualquierMetodo(), tienes que asegurarte que ese emp.direccion se ha inicializado con un new Direccion().

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: exception
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.