Java 仅使用for循环组合两个不重复的int数组
这是一个相当初级的作业,我很想得到一些代码方面的帮助 我需要使用for循环将两个整数数组合并为一个,并确保没有重复的数组。我在谷歌上搜索的任何东西都过于复杂,并且使用各种内置方法 这是我的密码:Java 仅使用for循环组合两个不重复的int数组,java,arrays,Java,Arrays,这是一个相当初级的作业,我很想得到一些代码方面的帮助 我需要使用for循环将两个整数数组合并为一个,并确保没有重复的数组。我在谷歌上搜索的任何东西都过于复杂,并且使用各种内置方法 这是我的密码: static void SumArray(){ int[] array1 = { 1, 2, 3 }; int[] array2 = { 3, 4, 5 }; int[] merged = new int[array1.length + array2.le
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));
我相信我会找到办法的
我想知道如果我的不起作用,为什么我的
因为merged[pos]
始终为0,因为您从未在代码中为其分配过任何其他值。创建数组时,数组项初始化为零
您不能只检查一个条目就知道是否要从array2
添加值。您必须检查您编写的所有条目,在第二个for
循环中使用嵌套循环。仅在尚未添加新条目时添加新条目
请注意,您还需要提前检查有多少重复项,以便知道merged
应该只有5个条目长,或者您需要在知道应该有多长时重新创建merged
。否则,您的最终结果将是{1,2,3,4,5,0}
,而不是{1,2,3,4,5}
以下是Java 8及更高版本的解决方案:
int[] first = { 1, 2, 3 };
int[] second = { 3, 4, 5 };
int[] merged = Stream.of(first, second)
.flatMapToInt(Arrays::stream)
.distinct()
.toArray();
因为第一个for循环中的“pos++”在第二个循环中用作j的开始索引。
你的3在索引2中,你将它与索引3进行比较,索引3永远不会相等
以下是你的答案:
int[] array1 = { 1, 2, 3 };
int[] array2 = { 3, 4, 5 };
int[] merged = new int[array1.length + array2.length];
int pos = 0,i=0, j;
Set<Integer> intSet = new HashSet();
for (i = 0; i < array1.length; i++) {
if(!intSet.contains(array1[i])) {
merged[pos] = array1[i];
intSet.add(Integer.valueOf(i));
pos++;
}
}
for (j= 0, pos = pos-1; j < array2.length; ) {
if(!intSet.contains(Integer.valueOf(array2[j]))) {
merged[pos] = array2[j];
intSet.add(Integer.valueOf(i));
pos++;
j++;
}
}
System.out.println(Arrays.toString(merged));
int[]array1={1,2,3};
int[]array2={3,4,5};
int[]合并=新int[array1.length+array2.length];
int pos=0,i=0,j;
Set intSet=new HashSet();
对于(i=0;i
您检查了错误的索引:if(merged[pos]!=array2[j]){
应该是if(merged[pos-1]!=array2[j]){
。请注意,只有在订购了互写的array1
和array2
时,代码才有效。请阅读: