2015-04-04 5 views
0

Я пытаюсь заполнить многомерный массив его индексом. Когда индекс завершен, перейдите к следующему, ...Как заполнить многомерный массив индексами?

Я должен сделать это без арахиса.

Мой код:

for(i = 0; i < tridimensional.length; i++){ 
    for(j=0; j < tridimensional[i].length; j++){ 
      for(k=0; k < tridimensional[i][j].length; k++){ 
       tridimensional[i][j][k] = (int) (Math.random() * 10+1); 
      } 
     } 
    } 

Для уточнения результата:

INDEX:1 
79 29 25 84 41 62 81 31 12 
63 13 87 71 4 46 21 20 47 
85 60 32 37 27 11 33 51 55 

INDEX:N 
50 82 72 15 74 80 5 17 43 
58 52 64 57 76 56 26 2 68 
39 54 77 48 70 73 8 86 34 

У меня есть метод для рандомизации чисел и не повторяется. Я работаю для двумерного массива, но хочу, чтобы он работал в трехмерном массиве для каждой матрицы в трехмерном [i].

for(i = 0; i < tridimensional.length; i++){ 
     for(j=0; j < tridimensional[i].length; j++){ 
      for(k=0; k < tridimensional[i][j].length; k++){ 
       do { 
       rand= (int) (Math.random() * 89+1); 
       } while (exist(tridimensional, rand)); 
       tridimensional[i][j][k] = rand; 
      } 
     } 
    } 

public static boolean exist(int[][][] tridimensional, int n) { 
    boolean exist = false; 
    int i, j, k; 

    for(i = 0; i < tridimensional.length; i++){ 

     for(j=0; j < tridimensional[i].length; j++){ 
      for(k=0; k < tridimensional[i][j].length; k++){ 
        if(tridimensional[i][j][k]==n) { 
        exist = true; 
        } 
      } 
     } 
    } 


    return exist; 
} 

Спасибо!

+2

Это непонятно. В чем проблема с вышеуказанным кодом? –

+1

Что происходит? Есть ли исключение? –

+0

Мне сложно объяснить это, но я попробую. Каждая трехмерная [i] имеет индивидуальную двумерную матрицу, и я должен ее заполнять индивидуально. – ZBlond

ответ

0

Помните, что Java на самом деле не имеет многомерных массивов; он имеет массивы массивов. Вам необходимо создать такие подмассивы:

// I assume here, you've already initialized `tridimensional` 
for(i = 0; i < tridimensional.length; i++){ 
    tridimensional[i] = new int[/*...appropriate size here*/];  // <=== 
    for(j=0; j < tridimensional[i].length; j++){ 
     tridimensional[i][j] = new int[/*...appropriate size here*/]; // <=== 
     for(k=0; k < tridimensional[i][j].length; k++){ 
      tridimensional[i][j][k] = (int) (Math.random() * 10+1); 
     } 
    } 
} 
+1

Спасибо, что поняли для меня! – ZBlond

Смежные вопросы