java - 合并两个二维数组 (M + N)
问题描述
我是第一年的编程人员,试图解决大学给我们学生的这个挑战。
问题图片
它说(N + K)的地方有一个错字,而实际上它实际上是(M + K)列。
我对这个问题的尝试如下
public static int[][] mergeArrays(int[][] arrayA, int[][] arrayB){
int rows = 3;
int columns = arrayA[0].length + arrayB[0].length;
int[][] mergedArray = new int[rows][columns];
int k = 0;
for (int i = 0; i < rows; i++)
{
for ( int j = 0 ; j < columns; j++)
{
try
{
mergedArray[i][j] = arrayA[i][j];
}
catch (ArrayIndexOutOfBoundsException e)
{
mergedArray[i][j] = arrayB[i][k];
k += 1;
}
}
}
return mergedArray;
}
public static void main(String [] args)
{
int [][] a1 = { {1,2,3,3,3} , {3,2,1,6,3} , {4,5,6,1,3} };
int [][] a2 = { {1,9,7,2,3} , {0,7,8,3,2} , {3,8,9,7,2} };
int[][] m = mergeArrays(a1,a2);
for (int[] x : m)
{
for (int y : x)
{
System.out.print(y + " ");
}
System.out.println();
}
}
该程序由于某种原因无法运行。我不知道我的方法有什么问题。如果有人帮助我,我将不胜感激。
解决方案
您没有正确合并它。您的逻辑是,如果 arrayA 列索引超出范围,则您正在从 arrayB 的列中添加。但是,如果这也超出了范围,就像您的情况一样。因为你总是在增加它的索引 k。您可以简单地分别迭代 2 个数组并合并到结果数组中。
public static int[][] mergeArrays(int[][] arrayA, int[][] arrayB) {
int rows = 3;
int columns = arrayA[0].length + arrayB[0].length;
int[][] mergedArray = new int[rows][columns];
int k = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < arrayA[0].length; j++) {
mergedArray[i][k++] = arrayA[i][j];
}
for (int j = 0; j < arrayB[0].length; j++) {
mergedArray[i][k++] = arrayB[i][j];
}
k=0;
}
return mergedArray;
}
推荐阅读
- cordova - 蓝牙串行离子不能在 Android 设备上工作,但在 IOS 上工作
- python - 如何放入列表理解
- python - 在 django live 应用程序中将 mysql 数据库从“utf8”更改为“utf8mb4”对数据的影响
- react-native - 如何在 React Native 中为元素添加过渡动画
- java - 几次repaint()后如何重绘JComponent?
- python - python记录使用文件名和行号
- sql - 选择具有优先级值的非重复行
- javascript - 如何将包含 \n 的字符串作为新行添加到 html?
- javascript - FullCalendar React timeGridWeek 坏了
- apache-flink - Flink CEP - 如果序列在一段时间内未到达,则无论是否有任何其他消息到达,都会发出警报