salve, ho un problema con questo codice:
precisamente dentro il while, mi da nullpointer exception,codice:public void inserimento (NodoPFFS<T> New1, NodoPFFS<T> temp1){ NodoPFFS<T> vuoto = new NodoPFFS<T>(); vuoto.setFrat(null); temp1.addFigl(New1); temp1=temp1.getFigl(); while(temp1.SiFra()==true) temp1=temp1.getFrat(); temp1.setFrat(New1); System.out.println("Elemento"+New1.getEl()+"inserito con successo"); }
nn riesco a capire perchè, visto che il metodo siFra dovrebbe funzionare:
posto anche tutto il codice delle due classi:codice:public boolean SiFra(){ if(fratello==null) return(false); else return(true); }
e AlberoPFFScodice:import java.util.*; public class NodoPFFS<T> { private T ele; LinkedList<NodoPFFS<T>> figli = new LinkedList<NodoPFFS<T>>(); private NodoPFFS<T> fratello; public NodoPFFS(){ ele=null; } public void setEl(T e){ ele=e; } public T getEl(){ return ele; } public void setFrat(NodoPFFS<T> fra){ fratello=fra; } public void addFigl(NodoPFFS<T> fig){ figli.addLast(fig); } public NodoPFFS<T> getFrat(){ return fratello; } public NodoPFFS<T> getFigl(){ return figli.getFirst(); } public boolean SiFra(NodoPFFS<T> x){ if(x.getFrat()==null) return(false); else return(true); } }
il mio problema è quello di riuscire a capire se l'attributo Fratello della classe NodoPFFS è vuoto o no. Nell'attributo Fratello si salva il puntatore al nodo successico, ma non posso confrontare un puntatore a null. Con cosa lo devo confrontare?codice:import java.util.*; public class AlberoPFFS<T> { public NodoPFFS<T> nodo,radice; private int numNodi; public AlberoPFFS(){ numNodi=0; radice=new NodoPFFS<T>(); } public void insRadice(T x){ numNodi++; radice.setEl(x); radice.setFrat(null); radice.addFigl(null); } public void inserimento (NodoPFFS<T> New1, NodoPFFS<T> temp1){ NodoPFFS<T> vuoto = new NodoPFFS<T>(); vuoto.setFrat(null); temp1.addFigl(New1); temp1=temp1.getFigl(); while(temp1.SiFra()==true) temp1=temp1.getFrat(); temp1.setFrat(New1); System.out.println("Elemento"+New1.getEl()+"inserito con successo"); } public NodoPFFS<T> scorri(NodoPFFS<T> temp1,LinkedList<NodoPFFS<T>> padri1){ NodoPFFS<T> vuoto = new NodoPFFS<T>(); if(temp1.getFigl()!=vuoto.getFrat()) {padri1.addFirst(temp1); temp1=temp1.getFigl(); return(temp1);} if(temp1.getFrat()!=vuoto.getFrat()) {temp1=temp1.getFrat(); return(temp1);} else temp1=padri1.getFirst().getFrat(); return(temp1); } public void insNodo (T x , T pad){ numNodi++; int c=1; LinkedList<NodoPFFS<T>> padri= new LinkedList<NodoPFFS<T>>(); NodoPFFS<T> temp=radice; NodoPFFS<T> New= new NodoPFFS<T>(); New.setEl(x); while(c==1){ if(temp.getEl()==pad){ inserimento(New,temp); c=0;} else{ temp=scorri(temp,padri); } } } public void stampa(){ NodoPFFS<T> vuoto = new NodoPFFS<T>(); int c=1; LinkedList<NodoPFFS<T>> padri= new LinkedList<NodoPFFS<T>>(); NodoPFFS<T> temp=radice; while(c==1){ while(temp.getFigl()!=vuoto.getFrat()){ padri.addFirst(temp); temp=temp.getFigl(); } System.out.println(temp.getEl()); if(temp.getFrat()!=vuoto.getFrat()) temp=temp.getFrat(); else{ temp=padri.getFirst().getFrat();; } if (padri.isEmpty()) c=0; } } }
spero che qualcuno mi possa aiutare;
grazie

Rispondi quotando
) in questo modo c non diventa mai 0 e si crea un bel looppone....