O código abaixo funciona, mas aqui fica uma dúvida minha, talvéz alguem possa responder:
quando eu declaro um array escrevo
String z[] - Tipo referência[]; e inicializo com - new String[4] - Tipo[tamanho];
No código eu quero criar um array z[4][3][3], portanto declaro
String[][] z[] - Tipo(String[][]) referência[]; e no meu ponto de vista deveria inicializar com - new String[][][4], ou pelo menos
String[3][3][4], para manter o padrão Tipo[tamanho] - mas o compilador aceita apenas String[4][3][3], oque seria Tipo[tamanho][][]
Isso não foge a sintaxe do Java?
import javax.swing.*;
public class Array3 {
public static void main (String arg[]){
//declaração de variáveis
String saida = "";
int k,i,j;
String[][] z[] = new String[4][3][3];
//atribuir valores
for (k=0; k<4; k++){
for (i=0; i<3; i++){
for (j=0; j<3; j++){
z[k][i][j] = "["+k+"]["+i+"]["+j+"]";}}}
for (i=0; i<3; i++){
for (k=0; k<4; k++){
for (j=0; j<3; j++){
saida += z[k][i][j]+",";}
saida += " ";}
saida += "n";}
//saida na tela
JOptionPane.showMessageDialog(null,saida);
System.exit(0);
}
}
Na verdade existem duas formas de declarar Arrays em Java:
Tipo[] variável
ou
Tipo variável[]
no caso você está misturando ambas.
Quando você junta várias, o que na verdade você está fazendo não é realmente uma "array tridimensional", e sim uma array de uma array de um array. Por isso, tem que colocar os tamanhos da esquerda pra direita.
Correto, é exatamente isso que eu estou fazendo, o java reconhece até um array bidimenciomal, e esse eu declaro usando o String[][], agora eu quero que cada elemento de uma nova string (z[]) referencie uma String[][], portanto eu uso o String[][] z[] (estou usando a forma
Tipo[] referência para criar a String[][] e a forma
Tipo referência[], para que cada elemento de z[] referencie um String[][]) mas a dúvida permanece:
No código eu quero criar um array z[4][3][3], portanto declaro
String[][] z[] - Tipo(String[][]) referência[]; e no meu ponto de vista deveria inicializar com - new String[][][4], ou pelo menos
String[3][3][4], para manter o padrão Tipo[tamanho] - mas o compilador aceita apenas String[4][3][3], oque seria Tipo[tamanho][][]
Antes de mais nada gostaria de agradecer ao Bani pela força, mas como não era exatamente a resposta para minha dúvida, fiquei pensando a respeito disso e chequei a uma conclusão intuitiva.
Estou apenas começando a estudar Java e gostaria que alguem me corrigisse se estiver errado ou confirmar se estou certo.
Quando declaro String[][] z[] o Java entende que eu quero um
" array de ´array de array´ ", portanto para z ele aloca memória para referenciar um String[][][], e quando eu utilizo o new para inicializar z eu ja estou trabalhando com uma referência para String[][][], portanto devo utilizar os cochetes nessa ordem.
Ainda não ficou muito claro pra mim, mas acho que é mais ou menos por aí sim.
z[] é a array mais interna, portanto a primeira a ser incializada.
Em seguida vem um String[] de z[], portando a segunda.
E por último o String[][] de z[].