使用for循环将三个1D合并为一个多维数组

时间:2016-02-25 17:09:44

标签: java arrays multidimensional-array

我正在尝试理解数组和循环。所以我想将三个1D阵列合并为一个。你能给我这么建议怎么做吗?您是否知道有什么良好的培训可以很好地理解编程中的这个主题? 在这里我们得到了代码,这就是我现在想出的:

public class Company {
public static void main(String[] args) {


    int[] arr1 = new int[]{1, 2, 3};
    int[] arr2 = new int[]{4, 5, 6};
    int[] arr3 = new int[]{7, 8, 9};

    int[][] arrX = new int[3][3];


    for(int i = 0; i<3; i++){
        for (int j = 0; j < 3; j++){
            arrX[i][j] = arr1[i] + arr2[j]; //Dont how to resolve this       without using any "Java built-in methods"
        }

    }

    for(int x = 0; x < arrX.length; x++){
        for (int y = 0; y <arrX[x].length; y++){
           System.out.print(arrX[x][y] + " ");
        }
    }

  //  System.out.println(Arrays.deepToString(tabx));

}

}

2 个答案:

答案 0 :(得分:3)

您接近解决方案,但只需要一个循环(外部循环):

for (int i = 0; i<3; i++) {
    arrX[1][i] = arr1[i];
    arrX[2][i] = arr2[i];
    arrX[3][i] = arr3[i];
}

迭代这三个数组只会在 之后才能在一个数据结构中将它们合并在一起。

当然更简单的方法是使用它:

arrX[1] = arr1;
arrX[2] = arr2;
arrX[3] = arr3;

或更短:

int[][] arrX = new int[][] {arr1, arr2, arr3};

或者在开头创建它:

int[][] arrX = new int[][] {{1,2,3},{4,5,6},{7,8,9}};

请允许我提及,Arrays是一种非常基本的数据类型 - 我认为应该避免Arrays在极端情况下可能很有用(嵌入式编程,高性能任务等) - 但通常使用Collection是可行的方法。

  • 收藏品更易于使用
  • 收藏品是真实的&#34;类
  • 收藏的表现并不像人们想象的那么糟糕

尝试使用List s,SetMap s - 或将结构化数据存储在您自己类的有意义字段中。

答案 1 :(得分:1)

如果要将所有三个数组添加到一个数据结构中,可以使用:

数组的ArrayList,    或者您可以创建一个像为arrx初始化的矩阵。

对于int []数组,不能在一个数组位置放置三个不同的整数。您可以将所有三个值相加并将它们存储在一个位置。

Matrix版本:在你的for循环中,你应该做

int row = 0;
for (int column = 0; column < 3; column++){
    arrx[row][column] = arr1[column];  //Row zero stores arr1
    arrx[row+1][column] = arr2[column]; //Row one stores arr2
    arrx[row+2][column] = arr3[column]; //Row two stores arr3
}

我喜欢使用行和列的整数来更容易直观地看到。

这是行的基本硬编码方式。您可以尝试找出如何动态跟踪行。