gpt4 book ai didi

java - 仅使用 for 循环组合两个不重复的 int 数组

转载 作者:行者123 更新时间:2023-12-01 19:56:15 25 4
gpt4 key购买 nike

这是一项非常适合初学者的作业,我很乐意在我的代码方面获得一些帮助。

我需要使用 for 循环将两个整数数组合并为一个,并确保没有重复项。我在谷歌上搜索到的任何内容都非常复杂,并且使用了各种内置方法。

这是我的代码:

static void SumArray(){
int[] array1 = { 1, 2, 3 };
int[] array2 = { 3, 4, 5 };
int[] merged = new int[array1.length + array2.length];
int pos = 0;

for (int i = 0; i < array1.length; i++) {
merged[pos] = array1[i];
pos++;
}
for (int j = merged[pos]; j < array2.length; j++) {
if (merged[pos] != array2[j]) {
merged[pos] = array2[j];
pos++;
}
}
System.out.println(Arrays.toString(merged));

最终,它应该返回 {1, 2, 3, 4, 5}。相反,目前它返回 1, 2, 3, 3, 4, 5

我想知道为什么我的 if 不起作用。它应该跳过 3,因为它已经在那里了。

我错过了什么?

谢谢:)

编辑:

谢谢大家,这就是我最终所做的,但这仍然不好,因为我没有检查第一个数组的第一个循环中的重复项:

    static void SumArray(){
int[] array1 = { 1, 2, 3 };
int[] array2 = { 3, 4, 5 };
int arrSize = array1.length + array2.length;
int[] merged = new int[arrSize];
int pos = 0;
int counter = 0;

for (int i = 0; i < array1.length; i++) {
merged[pos] = array1[i];
pos++;
}
for (int j = merged[pos]; j < array2.length; j++) {
if (merged[pos-1] != array2[j]) {
merged[pos] = array2[j];
pos++;
counter++;
}
}

int[] newMerged = new int[arrSize - counter + 1];
System.arraycopy(merged, 0, newMerged, 0, newMerged.length);
System.out.println(Arrays.toString(newMerged));
}

我相信我会找到办法。

最佳答案

I would like to know why my if doesn't work.

因为merged[pos]始终为 0,因为您从未在代码中为其分配任何其他值。创建数组时,数组条目初始化为零。

您不能仅检查一个条目来了解是否添加 array2 中的值。您必须检查您编写的所有条目,并在第二个 for 中使用嵌套循环。环形。仅当新条目尚不存在时才添加。

请注意,您还需要提前检查有多少重复项,以便知道 merged长度只能是 5 个条目,否则您需要重新创建 merged稍后当您知道应该多长时间时。否则,你的最终结果将是 {1, 2, 3, 4, 5, 0} ,不是{1, 2, 3, 4, 5} .

关于java - 仅使用 for 循环组合两个不重复的 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59593368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com