在一个for循环java中添加两个变量

时间:2015-08-17 18:36:14

标签: java arrays

给定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}我无法指出我的错误。:(

1 个答案:

答案 0 :(得分:0)

您需要记下要归档的内容,然后尝试对其进行编码。

  • 首先你需要一个大小为a + b的数组(这是正确的)
  • 现在你要将所有内容从a复制到c的开头(你的第一个循环是正确的)
  • 现在你要复制从b到c的所有内容,但是从你停止复制的地方开始(这​​是你编码变为复杂的嵌套循环)

所以你的代码应该是这样的:

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]