Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    16

    problema manipolazione oggetti

    ciao a tutti, cercando di implementare una struttura dati heap( heapsort ) ho avuto un problema, per semplificare il codice ho riassunto il problema che ho in piccolo programma di prova nel main
    codice:
    public class nod {
    	Integer chiave;
    	nod padre;
    	nod destro;
    	nod sinistro;
    	
    	nod(Integer chiave,nod padre,nod destro,nod sinistro){
    		this.chiave=chiave;
    		this.padre=padre;
    		this.destro=destro;
    		this.sinistro=sinistro;
    		
    	}
    	public static void main(String arg[]){
    		nod e[]=new nod[4];
    		e[1]=new nod(5,null,e[2],e[3]);
    		e[2]=new nod(43,e[1],null,null);
    		e[3]=new nod(53,e[1],null,null);
    		//e[2].chiave=65; // null pointer exception su entrambe queste righe
    		//e[3].chiave=543;
    		
    		System.out.println(e[1].chiave);
    		System.out.println(e[1].destro.chiave);// qui mi da  null pointer exception
    
    		System.out.println(e[1].sinistro.chiave);
    		
    
    	}
    
    }
    credo che siamo lagune di teoria
    potreste spiegarmi cosa sbaglio?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: problema manipolazione oggetti

    Originariamente inviato da slevin89
    codice:
    //e[2].chiave=65; // null pointer exception su entrambe queste righe
    //e[3].chiave=543;
    Su queste non vedo nulla di strano ... non mi pare proprio che possano lanciare NullPointerException.

    Originariamente inviato da slevin89
    codice:
    System.out.println(e[1].destro.chiave);// qui mi da  null pointer exception
    Quando hai istanziato il primo nod per e[1], il terzo argomento e[2] è ancora .... null! E quello si è tenuto! Solo dopo hai assegnato qualcosa a e[2] ma non è mica "retroattivo"! In sostanza non puoi fare così come hai fatto.

    Originariamente inviato da slevin89
    codice:
    System.out.println(e[1].sinistro.chiave);
    Idem come sopra: sinistro di e[1] è ancora null.

    Originariamente inviato da slevin89
    credo che siamo lagune di teoria
    Più che lacune sono proprie "lagune" di lacune ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    16

    Re: Re: problema manipolazione oggetti

    Originariamente inviato da andbin
    Su queste non vedo nulla di strano ... non mi pare proprio che possano lanciare NullPointerException.

    Quando hai istanziato il primo nod per e[1], il terzo argomento e[2] è ancora .... null! E quello si è tenuto! Solo dopo hai assegnato qualcosa a e[2] ma non è mica "retroattivo"! In sostanza non puoi fare così come hai fatto.

    Idem come sopra: sinistro di e[1] è ancora null.

    Più che lacune sono proprie "lagune" di lacune ....
    ok ho capito quindi creerò la struttura scorrendo l'array dalla fine e dovrei risolvere.

    comunque nelle righe
    e[2].chiave=65;
    e[3].chiave=543;
    ho null pointer exception, difatti inizialmente ho usato comandi di quel tipo per fare il programma, e ho provato poi le altre assegnazioni perchè avevo questo problema
    potrebbe essere che mi dia errore perchè nella dichiarazione iniziale io assegno destro e sinistro null? come negli altri comandi?

    comunque grazie per l'aiuto

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: problema manipolazione oggetti

    Originariamente inviato da slevin89
    comunque nelle righe
    e[2].chiave=65;
    e[3].chiave=543;
    ho null pointer exception
    Io ripeto che non c'è nulla di strano. Preso il tuo codice e lasciato nel main solo:

    codice:
    	public static void main(String arg[]){
    		nod e[]=new nod[4];
    		e[1]=new nod(5,null,e[2],e[3]);
    		e[2]=new nod(43,e[1],null,null);
    		e[3]=new nod(53,e[1],null,null);
    		e[2].chiave=65; // ok
    		e[3].chiave=543; // ok
    	}
    Il tuo codice compila e funziona senza alcun NullPointerException
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    16

    Re: Re: Re: Re: problema manipolazione oggetti

    Il tuo codice compila e funziona senza alcun NullPointerException
    ??? a me eclipse da null pointer exception, proverò a scaricare una versione aggiornata,
    comunque ho appena risolto facendo cosi
    codice:
                    e[2]=new nod();
    		e[2].chiave=65;
    		e[3]=new nod();
    		e[3].chiave=543;

    comunque non ti ci scervellare , cambio alcuni comandi nella struttura principale e dovrebbe funzionare
    grazie ancora per l'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.