Allora ragazzi ciao a tutti... sto facendo un progetto per l'uni in java.. senza discutere troppo sulla forma del codice (per adesso sto buttando giù qualcosa di veloce per vedere se funzionano i vari algoritmi che ho in mente) io ho questo codice (ve lo riporto nello stesso ordine di come me lo da durante il debug, e vi aggiungo la classe che ho creato..
Exception in thread "main" java.lang.NullPointerException
at AlberoLF.addNode(AlberoLF.java:36)
at AlberoLF.addRoot(AlberoLF.java:47)
at TestAlberiLF.main(TestAlberiLF.java:11)
ora nel main richiamo addRoot, dentro addRoot richiamo addNode e dentro di quest'ultimo richiamo setGenitore (che a sua volta richiama getGenitore, ciò che io credo sia il vero problema)
ora ho letto nel web che questa eccezione la da quando un oggetto è null.. ma se io evo verificare l'esistenza di un oggetto, come posso fare altrimenti?, qui di seguito vi metto il codice
import java.util.ArrayList;
public class NodoLF<T> {
private T data;
private NodoLF<T> primoFiglio;
private NodoLF<T> prossimoParente;
private NodoLF<T> genitore;
//costruttori
public NodoLF(){
}
public NodoLF(T data){
this.data=data;
}
public NodoLF(NodoLF<T> nodo){
this.data=nodo.getData();
this.primoFiglio=nodo.getPrimoFiglio();
this.prossimoParente=nodo.getProssimoParente();
this.genitore=nodo.getGenitore();
}
import java.util.*;
public class TestAlberiLF {
public static void main(String[] args){
AlberoLF<Integer> tree=new AlberoLF<Integer>();
NodoLF<Integer> root=tree.addRoot(9);
public NodoLF<T> addRoot(T info){
NodoLF<T> v=new NodoLF<T>(info);
addNode(null,v);
return v;
}
public NodoLF<T> addNode(NodoLF<T> nodoOld, NodoLF<T> nodoNew){
nodoNew.setGenitore(nodoOld); *****Qui mi da eccezione******
nodoOld=nodoOld.getPrimoFiglio(); *****Altrimenti se tolgo la linea di sopra me la da qui
while (nodoOld.getProssimoParente()!=null){
nodoOld=nodoOld.getProssimoParente();
}
nodoOld.setProssimoParente(nodoNew);
return nodoNew;
}
public void setData(T data){
this.data=data;
}
public void setPrimoFiglio(NodoLF<T> nodo){
this.primoFiglio=nodo;
}
public void setProssimoParente(NodoLF<T> nodo){
this.prossimoParente=nodo;
}
public void setGenitore(NodoLF<T> nodo){
this.genitore=nodo;
}
public T getData(){
if (this.data!=null)
return this.data;
else
return null;
}
public NodoLF<T> getPrimoFiglio(){
if (this.primoFiglio!=null)
return this.primoFiglio;
else
return null;
}
public NodoLF<T> getProssimoParente(){
if (this.prossimoParente!=null)
return this.prossimoParente;
else
return null;
}
public NodoLF<T> getGenitore(){
if (this.genitore==null)
return new NodoLF<T>();
else
return this.genitore;
}
grazie mille a chiunque risponderà