如何使用Java中的循环在3D数组中添加元素?

时间:2017-01-27 00:06:30

标签: java arrays

我知道如何在2D数组中添加元素,但出于某种原因,我的3d数组不起作用我做错了吗?

for (int i = 0; i < ROWS; i++){

        for (int j = 0; j < COLUMNS; j++){

            for (int k = 1; k < IN; k++){
                myArray [i][j][k] = i + 10;
            }
        }

    }

我有这样的数组myArray = new int [COLUMNS] [ROWS] [IN];是对的吗?因为它应该像array = {{1,2,3},{4,5,6},{7,8,9}};

4 个答案:

答案 0 :(得分:1)

如果这是你的阵列:{{1,2,3},{4,5,6},{7,8,9}},那么你不需要3D阵列,只需要2D阵列。

上面数组(您提供的)的元素是:

myArray[0][0] // 1        myArray[0][1] // 2        myArray[0][2] // 3
myArray[1][0] // 4        myArray[1][1] // 5        myArray[1][2] // 6
myArray[2][0] // 7        myArray[2][1] // 8        myArray[2][2] // 9

相应地调整代码:

for (int i = 0; i < ROWS; i++){
    for (int j = 0; j < COLUMNS; j++){
        myArray[i][j] = i + 10;
    }
}

在3D中执行此操作

如果您要使用某些3D数据,则只需在当前代码上添加另一个维度即可。数组获得另一个维度,我们添加另一个[]。 for循环得到另一个维度,我们添加另一个嵌套循环。

也许我们正在跟踪3D网格中的值,因此我们将尺寸定义为网格的大小,如下所示:

int rows = 3;
int columns = 4;
int layers = 5;

我们声明我们的3D阵列就像你说的那样:

int[][][] my3dArray = new int[rows][columns][layers];

然后我们可以初始化这些值并像开始一样开始使用我们的数组,只是这次我们不会引用变量行和列。

相反,这次我们将引用数组的长度。这使我们的代码更加灵活。另一个程序/类可以创建一个3d数组并将其发送到我们的程序,即使我们事先并不知道它们的网格大小(就像我们用它们做的那样),它仍然可以正常工作。

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

    for (int j = 0; j < my3dArray[0].length; j++) {

        for (int k = 0; k < my3dArray[0][0].length; k++) {

            // I randomly picked some formula
            my3dArray[i][j][k] = i + j * 100 + k * 10000;

    }

}

答案 1 :(得分:1)

与创建2D数组没有什么不同。

    // creating 3D array
    int[][][] myArray = new int[r][c][n];
    for (int i=0; i<r; i++){
        for (int j=0; j<c; j++){
            for (int k=0; k<n; k++){
                myArray[i][j][k] = i + 10;
            }
        }
    }

答案 2 :(得分:0)

为什么不推荐这个answer? 我希望这会帮助你解决问题。

答案 3 :(得分:0)

这是你的代码,在for循环和正确的值赋值中切换了'COLUMNS'和'ROWS'i*10 + j + k*80;

public static int [][][] myArray = new int[][][];
public static final int ROWS = 8, COLUMNS = 10, IN = 3;
public ExerciseThree() {
    myArray = new int [ROWS][COLUMNS][IN];
    for (int i = 0; i < ROWS; i++){
        for (int j = 0; j < COLUMNS; j++){  
            for (int k = 0; k < IN; k++){
                myArray [i][j][k] = i*10 + j + k*80;
            }
        }
    }
...

你也有打印3d阵列的错误。你应该在103和115行中将你的循环条件从<=切换到<。但这种方式更好:

for (int i = 0; i < ROWS; i++){
    System.out.print("{");
    for (int j = 0; j < COLUMNS; j++){
        System.out.print("{");  
        for (int k = 0; k < IN; k++){
            myArray [i][j][k] = i*10 + j + k*80;
            if (k < IN - 1) {
                System.out.print(",");
            }
        }
        System.out.print("},");
    }
    System.out.print("},\n");
}