Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    Mi aiutate vi prego? Metodo clone...

    Ciao!
    Dunque io ho un problema. Sto facendo un progetto e c'è un pezzo che mi sta facendo impazzire.
    Fra le tante classi ho una classe Frigo, la quale ha come attributo un ArrayList di oggetti di tipo Alimento (altra classe che ho implementato). E fin qui ok.
    La classe Alimento implementa l'interfaccia Cloneable ed ha quindi un metodo clone(), in cui c'è un try catch. Nel try c'è return super.clone(), nel catch c'è return null.
    Ok.
    Ora, anche Frigo purtroppo deve avere un metodo clone(), quindi implementa anch'essa l'interfaccia Cloneable ed ha il metodo clone(). Problemaaaa: come diamine devo fare dato che il Frigo ha un ArrayList di Alimento tutti da clonare? Devo fare un ciclo for? Il problema è, non so perchè, mi dà errore quando faccio alimenti.size() (alimenti è un metodo di Frigo che semplicemente restituisce l'ArrayList di Alimento), non capisco perchè mi dà questo errore!
    Aiutoooooo? Grazieee!
    Ilaria Bijoux - Gioielli Artigianali
    http://ilariabx.blogspot.com

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ancora nessuno di noi è veggente e/o sa che succede nel tuo computer, per cui che errore ti dà??

    ps scherzo ovviamente, ma se non ci dici l'errore, come ti aiutiamo??

  3. #3
    ok, controllo...

    dunque, mi dice (nel test) Exception in thread "main" java.lang.NullPointerException
    e mi indica come errata la riga del ciclo for dove c'è for(int i=0;i<alimenti.size();i++)
    aiutooooo cos'ha che non va il ciclo for???
    Ilaria Bijoux - Gioielli Artigianali
    http://ilariabx.blogspot.com

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da _Ilaria_
    aiutooooo cos'ha che non va il ciclo for???
    Considerato l'errore probabilmente non hai istanziato l'ArrayList ma senza vedere il codice non possiamo dirti cosa c'è che non va...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Originariamente inviato da _Ilaria_
    ok, controllo...

    dunque, mi dice (nel test) Exception in thread "main" java.lang.NullPointerException
    e mi indica come errata la riga del ciclo for dove c'è for(int i=0;i<alimenti.size();i++)
    aiutooooo cos'ha che non va il ciclo for???
    alimenti è null
    http://www.anobii.com/isalreadyinuse

  6. #6
    Allora, scusate. alimenti è l'ATTRIBUTO della classe frigo ed è un Arraylist di Alimento.
    se provo a mettere, invece di alimenti, il metodo getAlimenti() mi dà lo stesso errore.

    Volete tutto il codice?
    Ve lo dò se volete...
    Ilaria Bijoux - Gioielli Artigianali
    http://ilariabx.blogspot.com

  7. #7
    Originariamente inviato da _Ilaria_
    ...
    Volete tutto il codice?
    Ve lo dò se volete...
    Non sarebbe male per risolvere il problema.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    se tu hai un oggetto puoi dire

    ArrayList alimenti ;

    hai DICHIARATO che esiste una variabile di nome alimenti che è di tipo ArrayList

    alimenti = new ArrayList();

    hai ISTANZIATO alimenti.

    Tu probabilmente hai solo dichiarato la variabile, non la istanzi da nessuna parte

    Finchè non istanzi alimenti, questo assume un valore di default (null appunto) ecco perchè hai quella nullPointerException.

    Istanzia correttamente le variabili di istanza e riprova

  9. #9
    Ok, basta vi dò tutto il codice della classe Frigo. (La classe Alimento in realtà si chiama AlimentoFrigo):


    package cucina;
    import java.util.ArrayList;

    import alimenti.*;

    /**
    * Classe che crea un frigorifero
    * @author 3097536
    */

    public class Frigo implements Cloneable{

    private ArrayList<AlimentoFrigo> alimenti;

    /**
    * Crea un frigo con un insieme di alimenti
    * @param a ArrayList di alimenti
    */

    public Frigo(ArrayList<AlimentoFrigo> a)
    {
    alimenti = a;
    }

    /**
    * Aggiunge un alimento alla lista di alimenti
    * @param a alimento da agiungere
    */

    public void aggiungiAlimento(AlimentoFrigo a){
    alimenti.add(a);
    }

    /**
    * Rimuove un alimento dalla lista degli alimenti
    * @param a alimento da rimuovere
    */

    public void rimuoviAlimento(AlimentoFrigo a)
    {
    alimenti.remove(a);
    }

    /**
    * Restituisce gli alimenti presenti nel frigo
    * @return un ArrayList di alimenti
    */

    public ArrayList<AlimentoFrigo> getAlimenti()
    {
    return alimenti;
    }

    /**
    * Ordina la lista di alimenti da quello che scade prima a quello che scade per ultimo
    * usando l'algoritmo Inserction Sort
    */

    public void ordinaAlimenti()
    {
    for(int j=2;j<alimenti.size();j++)
    {
    AlimentoFrigo key = alimenti.get(j);
    int i = j-1;

    while(i>0 && key.getScadenza().before(alimenti.get(i).getScaden za()))
    {
    alimenti.set(i+1, alimenti.get(i));
    i = i-1;
    }
    alimenti.set(i+1, key);
    }
    }

    public Object clone(){

    try{
    Frigo f = (Frigo) super.clone();
    for(int i=0;i<alimenti.size();i++){
    f.rimuoviAlimento(alimenti.get(i));
    f.aggiungiAlimento((AlimentoFrigo) alimenti.get(i).clone());

    }
    return f;
    }
    catch (CloneNotSupportedException e){
    return null;
    }
    }
    }
    Ilaria Bijoux - Gioielli Artigianali
    http://ilariabx.blogspot.com

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    come pensavo, dove crei l'arraylist alimenti???
    vale null, dichiararlo non equivale ad istanziarlo

    al max fai

    ArrayList alimenti = new ArrayList();

    e stai a posto.

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.