Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216

    [Java] java.lang.NullPointerException

    Ho un errore java.lang.NullPointerException in fase di compilazione al rigo in rosso


    ArrayList<String> newCards = new ArrayList<String>();
    Random rand = new Random();
    for (int i=0; i<=50; i++)
    {
    int index = rand.nextInt(cards.size()); //cards è un vettore di stringhe e all'inizio ha 52 elementi
    newCards.add(cards.get(index));
    cards.remove(index);
    }
    newCards.add(cards.get(0));


    Questo frammento è un metodo di una classe invocato nel main.
    Se però, facendo un test, uso il codice direttamente nel main l'errore non viene riscontrato perché?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E' evidente che cards è visibile solo dentro al main... quindi l'hai dichiarato e inizializzato lì, mentre andava dichiarato a livello di classe e inizializzato dove vuoi (tranne nel main, che essendo statico non può avere accesso a membri di istanza, a meno che questi non siano anch'essi statici).


    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    a parte il test nel main.. cards è una variabile di istanza e la inizializzo nel costruttore


    ecco il costruttore

    ArrayList<String> newPack = new ArrayList<String>();
    for (int i=2; i<=10;i++)
    for (int j=0;j<=3;j++)
    newPack.add(Integer.toString(i));

    cards = newPack;


    lascia perdere quante volte vengono eseguite le istruzioni dei foe ho tlto qualcosa per non appesantire

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Allora deve esserci dell'altro, in una parte di codice che non hai postato, che dealloca in qualche modo quell'ArrayList o che lo nasconde (una variabile locale con lo stesso nome, ma non inizializzata).


    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

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.