我想生成一个数组,该数组的内容将表示两个给定字符串数组的笛卡尔乘积。
换句话说,我需要将来自第一阵列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
-循环,它会导致结果数组中的所有值被多次覆盖。
相反,您需要在生成两个给定数组的笛卡尔乘积的嵌套循环之外声明结果数组的索引k
。k
应当在内部循环的每个迭代步骤处递增。
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]