Java 将两个数组复制到一个数组中

Java 将两个数组复制到一个数组中,java,arrays,Java,Arrays,问题是要编写一个程序,其中包含两个数组,每个数组包含10个整数,a和b。c是一个包含20个整数的数组。程序应该将数组a和b放入数组c,数组a中的前10个整数是c,数组b中的后10个整数是c。然后程序应该显示c。这是我目前掌握的代码。它将arrayA中的值打印到arrayC中,但我不知道如何在不覆盖arrayC(arrayB)中已有的信息的情况下将arrayB中的值打印到arrayC中 公开课问题二 { 公共静态void main(字符串[]args) { int[]arrayA={31,14,5

问题是要编写一个程序,其中包含两个数组,每个数组包含10个整数,a和b。c是一个包含20个整数的数组。程序应该将数组a和b放入数组c,数组a中的前10个整数是c,数组b中的后10个整数是c。然后程序应该显示c。这是我目前掌握的代码。它将arrayA中的值打印到arrayC中,但我不知道如何在不覆盖arrayC(arrayB)中已有的信息的情况下将arrayB中的值打印到arrayC中

公开课问题二
{
公共静态void main(字符串[]args)
{
int[]arrayA={31,14,5,12,50,80,100,29,58,57};
int[]arrayB={9,13,156,78,36,46,86,98,63,2};
int[]arrayC=新int[20];
for(int i=0;i
你真的很接近!您的第二个循环每次将
元素初始化为9,而您应该在开始时只将其分配给10一次:

int element = 10;
for (int i = 0; i < arrayB.length; i++)
{
  arrayC[element] = arrayB[i];
  element++;
}
int元素=10;
for(int i=0;i
在解释如何修复当前代码之前,我首先建议您使用
arrayA
arrayB
的长度创建
arrayC
(这里有相同的实际结果,但它的优点是您可以在不修改代码的情况下向
arrayA
arrayB
添加更多元素)。接下来,在实际代码中,我将使用
System.arraycopy
执行复制。并使用
Arrays.toString(int[])
进行打印。例如

int[] arrayA = { 31, 14, 5, 12, 50, 80, 100, 29, 58, 57 };
int[] arrayB = { 9, 13, 156, 78, 36, 46, 86, 98, 63, 2 };
int[] arrayC = new int[arrayA.length + arrayB.length];
System.arraycopy(arrayA, 0, arrayC, 0, arrayA.length);
System.arraycopy(arrayB, 0, arrayC, arrayA.length, arrayB.length);
System.out.println(Arrays.toString(arrayC));
对于原始代码,使用
arrayA.length
i
获得正确的偏移量。例如

int[] arrayC = new int[arrayA.length + arrayB.length];
for (int i = 0; i < arrayA.length; i++) {
    arrayC[i] = arrayA[i];
}
for (int i = 0; i < arrayB.length; i++) {
    arrayC[i + arrayA.length] = arrayB[i];
}
int[]arrayC=newint[arrayA.length+arrayB.length];
for(int i=0;i
第二个循环错误。您可以使用以下代码:

int [] arrayA = {31, 14, 5, 12, 50, 80, 100, 29, 58, 57};
int [] arrayB = {9, 13, 156, 78, 36, 46, 86, 98, 63, 2};
int [] arrayC = new int [20];

System.arraycopy(arrayA, 0, arrayC, 0, arrayA.length);
System.arraycopy(arrayB, 0, arrayC, arrayA.length, arrayB.length);

System.out.println("The values of ArrayC are: ");

for(int val : arrayC) {
    System.out.println(val);
}

您的第二个循环不正确,因为您每次都在循环内将
元素设置为
9
;因此,它的值总是在开始下一次迭代时重置。您可以将它移到循环外以获得所需的结果。此外,我建议根据
的长度构造
arrayC
>arrayA
arrayB
,这样您就可以组合任意长度的数组

此外,我还建议将用于组合数组的代码移动到一个方法中,以保持内容的干净性和可重用性,以备将来使用

public class questionTwo {

  private static int[] combineArrays(int[] arrayA, int[] arrayB) {
    int[] arrayC = new int[arrayA.length + arrayB.length];
    int idx = 0;

    for (int x : arrayA) {
       arrayC[idx] = x;
       idx++;
    }

    for (int x : arrayB) {
       arrayC[idx] = x;
       idx++;
    }

    return arrayC;
  }

  public static void main(String[] args) {
    int[] arrayA = {31, 14, 5, 12, 50, 80, 100, 29, 58, 57};
    int[] arrayB = {9, 13, 156, 78, 36, 46, 86, 98, 63, 2};

    int[] arrayC = combineArrays(arrayA, arrayB);

    System.out.println("The values of ArrayC are: ");

    for(int val : arrayC) {
      System.out.println(val);
    } 
  }

}

此外,使用Java的基元数组通常被认为是一种不好的做法。请查看
列表
和相关对象,以获得更灵活、功能更全面的选项。

在需要向数组中添加更多项时,使函数动态化。我还没有测试,但我希望它能工作

public class questionTwo
{
  public static void main(String[] args)
  {
    int [] arrayA = {31, 14, 5, 12, 50, 80, 100, 29, 58, 57};
    int [] arrayB = {9, 13, 156, 78, 36, 46, 86, 98, 63, 2};
    int [] arrayC = new int [arrayA.length + arrayB.length];

    for (int i = 0; i < arrayA.length; i++)
      arrayC[i] = arrayA[i];

    int element = arrayA.length;
    for (int i = 0; i < arrayB.length; i++)
    {
      arrayC[element+i] = arrayB[i];
    }

    System.out.println("The values of ArrayC are: ");

    for(int val : arrayC)
    {
      System.out.println(val);
    } 

  }
}
公开课问题二
{
公共静态void main(字符串[]args)
{
int[]arrayA={31,14,5,12,50,80,100,29,58,57};
int[]arrayB={9,13,156,78,36,46,86,98,63,2};
int[]arrayC=新int[arrayA.length+arrayB.length];
for(int i=0;i
“成功了!”:你确定吗?你应该得到
31,14,5,12,50,80,100,29,58,57,9,13,156,78,36,46,86,98,63,2
作为你的最终结果,但我敢打赌你得到的
31,14,5,12,50,80,100,29,58,9,13,156,78,36,46,86,63,2
应该是10点开始的(或者更好的是,
arrayA.length
,而不是9。是的,我注意到了这个错误,所以我把它设置为10,它很好地捕捉了@KevinAnderson。)
public class questionTwo
{
  public static void main(String[] args)
  {
    int [] arrayA = {31, 14, 5, 12, 50, 80, 100, 29, 58, 57};
    int [] arrayB = {9, 13, 156, 78, 36, 46, 86, 98, 63, 2};
    int [] arrayC = new int [arrayA.length + arrayB.length];

    for (int i = 0; i < arrayA.length; i++)
      arrayC[i] = arrayA[i];

    int element = arrayA.length;
    for (int i = 0; i < arrayB.length; i++)
    {
      arrayC[element+i] = arrayB[i];
    }

    System.out.println("The values of ArrayC are: ");

    for(int val : arrayC)
    {
      System.out.println(val);
    } 

  }
}