2012-01-21 20 views
5

Con mi azulejo Editor que creé consigo una matriz de esta manera:Inicializar la matriz en una matriz

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} 
         } 

Por lo tanto, imprime una matriz de 2 dimensiones.

El problema es que tengo cientos de estos en una clase y lo que organizarlos para poder hacer como: Levels.getlevelCount;

Entonces me di cuenta de que podía hacer una matriz de 3 dimensiones: int [][][] AllLevels = new int [][][]

Pero mi pregunta es: ¿hay de todos modos para declarar una matriz dentro de otra especie de la siguiente manera:

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}}; 


     }; 

Por encima de código da un error de compilación.

+0

Gracias Dave! – AndroidXTr3meN

+0

Si tiene este tipo de matrices, considere eliminar los datos del código e inicializar las matrices de file/db. Las personas que tendrán que mantener su código se lo agradecerán. – SJuan76

+0

No tengo ningún archivo. Mi editor de fichas me da esto. Y no veo cómo le va a gustar a mi diseñador gráfico: D – AndroidXTr3meN

Respuesta

2

No puede hacer exactamente lo que tiene allí pero puede hacerlo.

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

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

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

O puede hacerlo en reversa si lo prefiere.

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

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

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

También puede hacerlo en línea, aunque no creo que sea muy legible. Si lo hace en línea, tampoco puede usar la inicialización de mano corta, en realidad tiene que declarar el new int[][] para cada matriz int bidimensional.

int [][] twod5; 

int [][] twod6; 

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

¡Genial! Pero son ellos quienes reemplazan el {twod1, twod2}; con realmente inicializar? – AndroidXTr3meN

+0

@ AndroidXtr3meN Actualicé mi respuesta con el escenario inverso ¿está más cerca de lo que necesita? – Dev

+0

¡Gracias! 10 caracteres – AndroidXTr3meN

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

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

Por supuesto, aquí hay un ejemplo 2D:

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

Así que primero se declaran las variables para cada nivel level1 y level2. Supongo que quieres referencias a ellos a juzgar por tu ejemplo. Si no, entonces puedes dejarlos fuera. De modo que una matriz multidimensional es solo una matriz de matrices de matrices ... Por lo tanto, puede inicializar cada elemento de la matriz de nivel superior por separado.

Luego observe que el operador de asignación = en realidad devuelve un valor, el valor de la asignación.

+0

Bueno, me refería a declarar una matriz bidimensional en una 3ra. Otra palabra un paso más de lo que muestra – AndroidXTr3meN

+0

Le falta una dimensión. –

+0

La idea es la misma. Acabo de hacer un ejemplo en 2D para ilustrar el concepto utilizado. – tskuzzy

Cuestiones relacionadas