Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema con costruttore...

    Ciao a tutti, ho un problemino con un oggetto di un mio programmino in Java. Ho creato tale oggetto per salvarmi dei dati che mi servono. Questa classe contiene due ArrayList che mi contengono una collezione di oggetti che mi servono per un altro metodo...
    Tale classe è:
    codice:
    public class Permutation {    
        private List permutation;
        private List nodeseq;    
        /** Creates a new instance of Permutation */
        public Permutation(List permut, List node) {
            for (int i=0; i<permut.size(); i++) {
                Object o = permut.get(i);
                permutation.add(o);
            }
            for (int i=0; i<node.size(); i++) {
                Object o = node.get(i);
                permutation.add(o);
            }
        }
        public List getPerm() {
            return permutation;
        }    
        public List getNodeSequence() {
            return nodeseq;
        }    
    }
    Ora da un'altra classe faccio
    codice:
    public Permutation findPermutation (List tour) {
         ...
         ...
         ...
         Permutation p = new Permutation(permutationok, perm);
         return p;
    }
    dove ci sono i ... praticamente mi compongo i due ArrayList che poi passo come parametro al costruttore della classe Permutation (permutationok e perm sono due ArrayList).
    Ma quando compilo mi dice:
    Exception in thread "main" java.lang.NullPointerException
    Come mai non riesce a passarmi due ArrayList come parametri??? Bho...
    Eventualmente qualcuno potrebbe dirmi come arginare questo problema???

    Grazie a tutti...

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

    Re: Problema con costruttore...

    Originariamente inviato da snieco
    Ciao a tutti, ho un problemino con un oggetto di un mio programmino in Java. Ho creato tale oggetto per salvarmi dei dati che mi servono. Questa classe contiene due ArrayList che mi contengono una collezione di oggetti che mi servono per un altro metodo...
    Tale classe è:
    codice:
    public class Permutation {    
        private List permutation;
        private List nodeseq;
        ...
    permutation e nodeseq sono inizializzate per default a null. Non hai assegnato alle variabili alcun oggetto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Anzitutto dovresti mostrare come istanzi i due ArrayList, altrimenti come si fa a capire dove sbagli?

    Seconda cosa: una Exception non può essere generata in compilazione, ma solo in esecuzione, dopo aver compilato.
    Ad ogno modo, quando la JVM solleva un'eccezione, ti dice anche su quale linea di programma essa è stata generata... se provi a controllare quella linea, quelle precedenti e le chiamate ai vari metodi (che sono tutti elencati nello StackTrace dell'eccezione) dovresti riuscire a capire perchè un dato oggetto sia nullo.


    Se proprio non riesci a trovare l'inghippo, allora posta tutto il codice significativo (senza tralasciare le inizializzazioni!!) e specifica quale linea viene segnalata dall'eccezione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Allora:
    Per i due ArrayList permutationok e perm
    codice:
    List perm = new ArrayList();
    List permutationok = new ArrayList();
    Poi con una serie di add ho aggiunto degli elementi agli ArrayList. Inun esempio che ho fatto, perm contiene 4 oggetti Integer, permutationok contiene 8 oggetti Node (degli oggetti che mi sono fatto io).

    In esecuzione mi solleva l'eccezione su queste righe dicodice:
    nel Main dove invoco il metodo findPermutation, poi alla riga
    codice:
    Permutation p = new Permutation(permutationok, perm);
    del metodo findPermutation ed alla riga
    codice:
    permutation.add(o);
    nel costruttore della classe Permutation.

    Per andbin, non viene assegnata alcuna variabile agli oggetti in questione, ma quando invoco il costruttore riempio i due ArrayList... Scusami la domanda che può sembrare idiota, ma non me ne intendo tantissimo di programmazione

  5. #5
    Ho risolto!!!! Effettivamente era una cavolata!!! Ecco il nuovo costruttore della classe Permutation:
    codice:
    public Permutation(List permut, List node) {        
            permutation = new ArrayList();
            nodeseq = new ArrayList();
            for (int i=0; i<permut.size(); i++) {
                Object o = permut.get(i);          
                permutation.add(o);
            }
            for (int i=0; i<node.size(); i++) {
                Object o = node.get(i);
                permutation.add(o);
            }
        }
    Nel precedente costruttore non avevo inserito
    codice:
    permutation = new ArrayList();
    nodeseq = new ArrayList();
    Quindi era comprensibile... Come faceva a sapere senza che gli venisse detto che permutation e nodeseq sono due ArrayList????

    Grazie e tutti coloro mi hanno aiutato!!! Aveva ragione andbin, le due List non erano state inizializzate!!!!

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.