Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    274

    [java] nullPointerException

    Raga non riesco a capacitarmi di come questo codice possa dare
    un NullPointerException ....
    devo cercare l'errore altrove ?

    public CD trovaCD(String titolo)
    {
    CD confronto = null;

    for(int i = 0; i < listaCD.size(); ++i){
    confronto = (CD) listaCD.get(i);
    if(confronto.matchTitolo(titolo))
    return confronto;
    }
    return null;
    }

    -----------------
    java.lang.NullPointerException
    at CD.matchTitolo(CD.java:46)
    at ArchivioCD.trovaCD(ArchivioCD.java:81)
    at ArchivioCD.trovaCD(ArchivioCD.java:71)
    at ArchivioCD.rimuoviCD(ArchivioCD.java:94)
    at ConsoleCD.eseguiFunzioneScelta(ConsoleCd.java:30)
    at ConsoleCD.main(ConsoleCd.java:69)
    Exception in thread "main"
    Interactive Session Ended

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    prova con
    codice:
    listaCD.size()-1
    nella def del for

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    No, il problema è un altro: tu usi la forma prefissa dell'operatore ++, questo genera l'errore. Prova così:
    codice:
    for(int i = 0; i < listaCD.size(); i++){
       confronto = (CD) listaCD.get(i);
       if(confronto.matchTitolo(titolo))
          return confronto;
       }
       return null;
    }
    ...
    Questo perchè la forma prefissa agisce in modo decisamente diversa dalla forma suffissa:

    La forma prefissa, prima incrementa la variabile, poi valuta l'espressione. Questo significa che al momento del test i vale (size - 1), poi viene incrementata i ed il controllo va avanti.

    La forma suffissa, invece, agisce al contrario: prima valuta la variabile, poi essa viene incrementata.

    Con quel codice, infatti, ti perde il primo valore della lista, ma tenta di recuperare quello oltre l'ultimo. A te serve il primo e non quello dopo l'ultimo (che è NULL)!


    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
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    274
    hum ok ..
    mi sono accorto che furbescamente cercavo di eseguire delle operazioni con CD = null ... ecco xè mi dava il nullPoiter ... grazie cmq raga

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 © 2024 vBulletin Solutions, Inc. All rights reserved.