我有三个数组,如下所示:
int a[] = {1,2,3,4};
int b[] = {5,6,7,8};
int c[] = {9,10,11,12};
我想通过从每个数组中取第一个元素,然后取第二个元素等来合并上述数组,以获得以下结果:
int d[] = {1,5,9,2,6,10,3,7,11,4,8,12};
我尝试了以下代码,但从输出中可以看出,它将来自每个数组的数据连接起来,而不是将同一索引下的元素分组在一起。我怎样才能解决这个问题?
- 我的代码:*
public class MergeTwoArrays2 {
public static void main(String[] args) {
int a[] = {1,2,3,4};
int b[] = {5,6,7,8};
int c[] = {9,10,11,12};
int a1 = a.length;
int b1 = b.length;
int c1 = c.length;
int d1 = a1 + b1 +c1;
int[] d = new int[d1];
for (int i = 0; i < a1; i = i + 1) {
d[i] = a[i];
}
for (int i = 0; i < b1; i = i + 1) {
d[a1 + i] = b[i];
}
for (int i = 0; i < c1; i = i + 1) {
d[a1 + b1 + i] = c[i];
}
for (int i = 0; i < d1; i = i + 1) {
System.out.println(d[i]);
}
}
}
- 输出:*
[1,2,3,4,5,6,7,8,9,10,11,12]
- 预期产出:*
[1,5,9,2,6,10,3,7,11,4,8,12]
2条答案
按热度按时间jutyujz01#
因此,您需要从所有三个数组
a
、b
和c
中获取第一个元素,然后是第二个元素,以此类推。为此,您需要一种不同的填充阵列
d
的策略。可以同时遍历所有数组,检查下一个元素是否存在于特定数组中,如果存在,则将其分配到结果数组中的当前位置。
如果所有给定的数组
a
、b
和c
都具有相同长度,则可以去掉if
语句:概括问题
您的问题可以概括为合并具有相同长度的任意数整数数组。
这将允许消除重复语句和硬编码名称。
基于流的解决方案
如果您对流IPA感到满意,则可以使用一条语句表示上述广义方法的逻辑:
a0zr77ik2#
使用java流,您可以这样做: