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

    [Java] Array tridimensionali

    All'interno di una porzione di codice del mio programma scrivo quanto segue...

    codice:
    double[][][] pagedMatrixes  = new double[numberOfPages][][];
    ...
    
    for(int v = 0; v < vIter; v++)
    {
           ........
           for(int i = 0; i < iIter; i++)
           {
                   pagedMatrixes[v][i] = new double[rowWidth];                      // 1
                   ............
                   for(int j = 0; j < jIter; j++)
                   {
                               ................
                               pagedMatrixes[v][i][j] = ....;
                   }
           }
    }
    In corrispondenza della riga 1 ottengo il lancio di NullPointerException. Sto sbagliando qualcosa?

  2. #2
    codice:
    new double[numberOfPages][][];
    non hai definito il numero di colonne.

    Se ad esempio tu facessi:
    codice:
     double matrice[][] = new double[5][];
     double d = matrice[1][0]; //NullPointerException
    in matrice[1] non è stato istanziato un array di double (nemmeno nelle altre 4 celle), quindi per evitare il sollevamento dell'eccezione dovresti fare:
    codice:
     for(int i = 0; i < matrice.length; i++) {
        matrice[i] = new double[numero celle];
     }
    quindi la chiamata di prima adesso assegna alla variabile d il valore 0.0, che è il valore di default usato per tutte le celle di un array di double all'atto della sua istanziazione.

  3. #3
    Grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    codice:
    new double[numberOfPages][][];
    non hai definito il numero di colonne.
    Tecnicamente non è affatto un errore! È perfettamente lecito fare così. Gli array multi-dimensione sono semplicemente array-di-array e quello che conta, in una istanziazione di questo tipo, è che sia dimensionata almeno la prima dimensione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Originariamente inviato da andbin
    Tecnicamente non è affatto un errore! È perfettamente lecito fare così.
    Su questo siamo d'accordo.
    Infatti non ho parlato di errori di compilazione, ma avevo spiegato cosa doveva fare per non incorrere nella run-time exception.

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.