通过添加第一阵列和第二阵列的元素来填充第三阵列



我想生成一个数组,该数组的内容将表示两个给定字符串数组的笛卡尔乘积

换句话说,我需要将来自第一阵列arr1的每个String与来自第二阵列arr2的每个String连接起来。

这是我的代码:

String[] arr1 = {"a", "b", "c"};
String[] arr2 = {"d", "e", "f"};
String[] result = new String[arr1.length * arr2.length];
for (int k = 0; k < result.length; k++) {
for (int i = 0; i <arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
result[k] = arr1[i] + arr2[j];
}
}
}
System.out.println(Arrays.toString(result));

电流输出:

[cf, cf, cf, cf, cf, cf, cf, cf, cf]

所需输出:

[ad, ae, af, bd, be, bf, cd, ce, cf]

我该怎么修?

您不需要第一个for-循环,它会导致结果数组中的所有值被多次覆盖。

相反,您需要在生成两个给定数组的笛卡尔乘积的嵌套循环之外声明结果数组的索引kk应当在内部循环的每个迭代步骤处递增。

int k = 0;
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
result[k++] = arr1[i] + arr2[j];
}
}
System.out.println(Arrays.toString(arr3));

输出:

[ad, ae, af, bd, be, bf, cd, ce, cf]

最新更新