elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Top 20 herramientas Hacking más populares de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  exception en arbol binario
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: exception en arbol binario  (Leído 1,208 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
exception en arbol binario
« en: 22 Noviembre 2014, 20:00 pm »

Saludos

Estoy creando una arbol binario, en el cual los elementos del nodo son un apuntador al nodoIzquierdo, un  apuntador al nodoDerecho y el dato sería de tipo L, que a su vez es una clase que contiene dos elementos de tipo String uno que se llama lexema y otro categoria.

Para la clase NodoArbol tengo 2 constructores uno al que le paso un objeto de tipo L, y otra al que le paso simplemente un String, y ese string lo tengo que almacenar en el campo lexico de un objeto L, por eso lo hice de la siguiente manera:

Código
  1. class L{
  2. String lexico;
  3. String categoria;
  4.  
  5. L(){
  6. lexico = "";
  7. categoria = "";
  8. }
  9. }
  10.  
  11. class NodoArbol{
  12. NodoArbol nodoIzq;
  13. NodoArbol nodoDer;
  14. L lexema;
  15.  
  16. public NodoArbol(L datos){
  17. lexema = datos;
  18. nodoIzq = nodoDer = null;
  19. }
  20.  
  21. public NodoArbol(String datos) {
  22. lexema.lexico = datos;// aqui esta el error
  23. lexema.categoria = "";
  24. nodoIzq = nodoDer = null;
  25. }
  26.  
  27. public void insertar(L datos){
  28. if((datos.categoria).equals("Id"))
  29. {
  30. if(nodoIzq == null)
  31. {
  32. System.out.println("nodo lado izquierdo");
  33.   nodoIzq = new NodoArbol(datos);
  34. }
  35. else
  36.   nodoIzq.insertar(datos);
  37. }
  38. else
  39. {
  40. if(nodoDer == null)
  41.   nodoDer = new NodoArbol(datos);
  42. else
  43.   nodoDer.insertar(datos);
  44. }
  45. }
  46.  
  47. }
  48.  
  49. class Arbol{
  50. private NodoArbol raiz;
  51. public Arbol sig;
  52.  
  53. public Arbol(){
  54. raiz = null;
  55. sig = null;
  56. }
  57.  
  58. public void insertarNodo(String datos) {
  59. if(raiz == null)
  60. {
  61.       raiz = new NodoArbol(datos);
  62. }
  63. }
  64.  
  65. public void insertarNodo(L datos){
  66. if(raiz == null)
  67. {
  68.       raiz = new NodoArbol(datos);
  69. }
  70. else
  71.   raiz.insertar(datos);
  72. }
  73. }

el problema es que a la hora de mandar llamar al metodo insertarNodo() con un String como argumento, me manda un excepcion NullPointerException, en el siguiente constructor:

Código
  1. public NodoArbol(String datos) {
  2. lexema.lexico = datos;// aqui esta el problema
  3. lexema.categoria = "";
  4. nodoIzq = nodoDer = null;
  5. }

y no tengo idea de cómo arreglarlo

gracias de antemano


En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.250


Be the change you wanna see in te world


Ver Perfil
Re: exception en arbol binario
« Respuesta #1 en: 22 Noviembre 2014, 21:46 pm »

El problema es que tienes que inicializar el objeto lexema antes de poder asignarle valores a las variables lexico y categoria

Entiendes?

Seria algo asi como:

Código
  1.  
  2. public NodoArbol(String datos) {
  3.    lexema = new L(); //INICIALIZA EL OBJETO
  4.    lexema.lexico = datos;// YA NO DEBE HABER PROBLEMAS
  5.    lexema.categoria = "";
  6.    nodoIzq = nodoDer = null;
  7.    }
  8.  

Te voy a dar una recomendación, creo que sería mejor para tu código si al constructor de la clase L le añadieras una sobrecarga que fuera algo así como:

Código
  1. class L{
  2.    String lexico;
  3.    String categoria;
  4.  
  5.    L(){
  6.       lexico = "";
  7.       categoria = "";
  8.    }
  9.  
  10.    //SOBRECARGA
  11.    L(String lex, String cat){
  12.        lexico = lex;
  13.        categoria = cat;
  14.    }
  15. }

Con esta sobrecarga te ahorras el trabajo de además de crear el objeto, tener que asignarle valores a las variables fuera de la clase L, el constructor se encarga de eso una vez le pases como parámetros los valores correspondientes.

Espero te haya podido ayudar

PD: Te digo sobrecarga pues quizas de acuerdo a la naturaleza de tu problema necesites tener un constructor que le asigne cadenas vacías a las variables. En caso de que no lo necesites lo puedes quitar, que de igual manera si lo necesitaras solo tienes que pasarle al nuevo constructor los valores

Código
  1. new L("","");


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Altura de arbol binario
Java
l337* 4 34,376 Último mensaje 5 Diciembre 2009, 13:08 pm
por imnohacker
Arbol binario Ejemplo
.NET (C#, VB.NET, ASP)
S1dD3xt35 0 6,570 Último mensaje 21 Abril 2010, 07:18 am
por S1dD3xt35
arbol binario
Programación C/C++
karmi 2 3,211 Último mensaje 14 Diciembre 2010, 22:08 pm
por ANTÓN RAMIREZ
Compilacion - Arbol Binario
.NET (C#, VB.NET, ASP)
Castiel 0 1,347 Último mensaje 18 Febrero 2015, 06:36 am
por Castiel
Eliminacion Árbol Binario
Programación C/C++
Arnold Herrera 6 1,207 Último mensaje 23 Abril 2016, 15:44 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines