int[] mergeArrays(int[] a, int[] b){
int[] c = new int [a.length+b.length];
for(int i=0; i > c.length; i++){
if(a[i] >= b[i]){
c[i] = a[i];
}
else
c[i] = b[i];
}
}
return c;
}
这是我合并具有不同值并组合相同值的两个数组的方法。输出应该是一个新数组,包含来自两个数组的所有值,并组合所述数组的相同值。
当我在这个方法中传递两个数组并打印出返回的数组时,似乎for循环没有做任何事情,因为值保持为零。是什么原因是新值没有分配给通过for循环的c []数组?
答案 0 :(得分:2)
你写过我&gt;在for循环中的c.length,它必须是i < c.length
答案 1 :(得分:0)
public static int[] mergeArrays(int[] a, int[] b) {
List<Integer> temp = new ArrayList<Integer>();
for (int i = 0; i < a.length; i++) {
temp.add(a[i]);
}
for (int i = 0; i < b.length; i++) {
if (!temp.contains(b[i])) {
temp.add(b[i]);
}
}
Collections.sort(temp);
int[] result = temp.stream().mapToInt(i->i).toArray();
return result;
}
此代码将为您的目的服务。我们不能通过添加2个数组来构造具有大小的最终数组。因为您关注的是消除重复值。因此,使用值构造List,然后将其转换为int []。
答案 2 :(得分:0)
根据您的评论,您正在组合两个已排序的数组,并希望对结果进行排序。为此,您需要两个计数器(每个输入数组一个)。
int ait = 0;
int bit = 0;
while(true) {
if(ait < a.length && bit < b.length) {
if(a[ait] <= b[bit])
c[ait+bit] = a[ait++];
else
c[ait+bit] = b[bit++];
} else if(ait < a.length) {
c[ait+bit] = a[ait++];
} else if(bit < b.length) {
c[ait+bit] = b[bit++];
} else {
break;
}
}