Isso não foge a sintaxe do Java?

5 respostas
D
O código abaixo funciona, mas aqui fica uma dúvida minha, talvéz alguem possa responder:


quando eu declaro um array escrevo


<b>String</b> z[] - <b>Tipo</b> referência[];  e inicializo com - new <b>String</b>[4]  -  <b>Tipo</b>[tamanho];





No código eu quero criar um array z[4][3][3], portanto declaro


<b>String[][]</b> z[] - <b>Tipo(String[][])</b> referência[]; e no meu ponto de vista deveria inicializar com - new <b>String[][]</b>[4], ou pelo menos


<b>String[3][3]</b>[4], para manter o padrão  <b>Tipo</b>[tamanho] - mas o compilador aceita apenas <b>String</b>[4]<b>[3][3]</b>, oque seria <b>Tipo</b>[tamanho]<b>[][]</b>





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


 }


}

5 Respostas

B

Na verdade existem duas formas de declarar Arrays em Java:

Tipo[] variável

ou

Tipo variável[]



no caso você está misturando ambas.

B

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.

D

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][][]

D

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.

B

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[].

Criado 23 de janeiro de 2003
Ultima resposta 25 de jan. de 2003
Respostas 5
Participantes 2