如何通过索引填充多维数组?

时间:2015-04-04 16:51:03

标签: java multidimensional-array

我试图通过它的索引填充一个多维数组。索引完成后,转到下一个,...

我必须在没有arraylist的情况下这样做。

我的代码:

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

谢谢!

1 个答案:

答案 0 :(得分: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);
        }
    }
}