给定2个int数组,每个长度为2,返回一个长度为4的新数组,其中包含所有元素。 例如:
plusTwo({1, 2}, {3, 4}) → {1, 2, 3, 4}
这是一个示例问题,但我想做一些额外的练习。如果问题没有指定两个数组的长度。然后我把代码编写为:
public int[] plusTwo(int[] a, int[] b) {
int[] c=new int[a.length+b.length];
for(int i=0;i<a.length;i++){
c[i]=a[i];
for(int j=a.length;j<a.length+b.length;j++){
for(int m=0;m<b.length;m++){
c[j]=b[m];
}
}
}
return c;
}
我的回报是{1,2,4,4}我无法指出我的错误。:(
答案 0 :(得分:0)
您需要记下要归档的内容,然后尝试对其进行编码。
所以你的代码应该是这样的:
int[] c= new int[a.length+b.length];
for(int i =0; i<a.length;i++) {
c[i]=a[i];
}
for(int i = 0; i<b.length;i++) {
c[i+a.length]=b[i];
}
或者是花哨的并使用System.arraycopy来解释所需的步骤更好一点:
int[] c= new int[a.length+b.length];
System.arraycopy(a, 0, c, 0, a.length); //(copy a[0]-a[a.length-1] to c[0]-c[a.length-1]
System.arraycopy(b, 0, c, a.length, b.length); //copy b[0]-b[b.length-1] to c[a.length]-c[c.length-1]