2012-01-21 18 views
5

Con il mio Tile Editor che ho creato io ottenere un array come questo:Initialize Array in un array

int [][] Level02 = new int[][] { 
          { 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12}, 
          { 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12}, 
          { 11, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, 13, -1, -1, -1, -1, 12}, 
          { 11, 13, -1, -1, 27, 27, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, 13, 13, -1, -1, -1, 13, 13, -1, -1, -1, 32, -1, -1, 27, 27, 25, 25, 27, 27, -1, -1, 32, 12}, 
          { 16, 16, 16, 16, 16, 16, 16, 16, 16, -1, -1, 13, 13, -1, -1, -1, 13, -1, -1, -1, 25, 25, 25, -1, -1, -1, 27, 27, 27, 27, -1, -1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 
         } 

Quindi esso stampa una matrice bidimensionale 2.

Il problema è che ho centinaia di questi in una classe e quello di organizzare loro di essere in grado di fare come: Levels.getlevelCount;

Così ho capito che avrei potuto fare un array dimensionale 3: int [][][] AllLevels = new int [][][]

ci sono comunque a dichiarare un array all'interno di un altro po 'come questo::

Ma la mia domanda è

int[][][] all = new int[][][]{ 


     int [][] Level01= new int[][] { 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}}; 

int [][] Level02= new int[][] { 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}}; 


     }; 

Sopra codice dà un errore di compilazione.

+0

Grazie Dave! – AndroidXTr3meN

+0

Se si dispone di questo tipo di array, prendere in considerazione la rimozione dei dati dal codice e l'inizializzazione degli array dal file/db. Le persone che dovranno mantenere il tuo codice ti ringrazieranno. – SJuan76

+0

Non ho file. Il mio editor di tessere mi dà questo. E non vedo come mi interesserà il mio grafico: D – AndroidXTr3meN

risposta

2

Non puoi fare esattamente quello che hai, ma puoi farlo.

int [][] twod1 = {{1, 1,}, {-1, -1}}; 

int [][] twod2 = {{1, 1,}, {-1, -1}}; 

int [][][] threed = {twod1, twod2}; 

Oppure puoi farlo al contrario se preferisci.

int [][][] threed2 = {{{1, 1,}, {-1, -1}}, 
        {{1, 1,}, {-1, -1}}}; 

int [][] twod3 = threed2[0]; 

int [][] twod4 = threed2[1]; 

Si può anche farlo in linea, non credo che sia molto leggibile. Se lo si fa in linea, non è possibile utilizzare l'inizializzazione della short hand in realtà è necessario dichiarare lo new int[][] per ciascun array int 2-dimensionale.

int [][] twod5; 

int [][] twod6; 

int [][][] threed3 = { twod5 = new int[][]{{1, 1,}, {-1, -1}}, 
         twod6 = new int[][]{ {1, 1,}, {-1, -1}}}; 
+0

Ottimo! Ma sono chiunque a sostituire {twod1, twod2}; con in realtà inizializzare? – AndroidXTr3meN

+0

@ AndroidXtr3meN Ho aggiornato la mia risposta con lo scenario inverso più vicino a quello che ti serve? – Dev

+0

Grazie !! 10 caratteri – AndroidXTr3meN

2
int[][][] all = ..... 

int[][] level1 = all[0]; 
int[][] level2 = all[1]; 
2

Naturalmente, ecco un esempio 2D:

int[] level1, level2; 
int[][] all = new int[][] { 
    level1 = new int[]{ 1, 2 }, 
    level2 = new int[]{ 3, 4 } 
}; 

Quindi, prima abbiamo dichiarare le variabili per ogni livello level1 e level2. Suppongo che tu voglia referenze su di loro a giudicare dal tuo esempio. Se no, allora puoi lasciarli fuori. Quindi un array multidimensionale è solo una serie di matrici di array ... Quindi è possibile inizializzare semplicemente ogni elemento dell'array di primo livello separatamente.

Quindi notare che l'operatore di assegnazione = restituisce effettivamente un valore, il valore dell'assegnazione.

+0

Bene Intendevo dichiarare un array bidimensionale in un terzo. Un'altra parola un passo in più di quello che mostri – AndroidXTr3meN

+0

Ti manca una dimensione. –

+0

L'idea è la stessa. Ho appena fatto un esempio 2D per illustrare il concetto usato. – tskuzzy

Problemi correlati