Java 将两个阵列合并为一个阵列

Java 将两个阵列合并为一个阵列,java,arrays,Java,Arrays,我正在尝试将两个数组合并成一个大数组。 但我不明白为什么它不起作用 这是我的密码: public class TestaCombine { private int[] arrayX = new int[20]; private int[] arrayY = new int[6]; private int[] ratings; public void getRanks(){ arrayX[0] = 3; arrayX[1] = 4; arrayX[2]

我正在尝试将两个数组合并成一个大数组。 但我不明白为什么它不起作用

这是我的密码:

     public class TestaCombine {

private int[] arrayX = new int[20];
private int[] arrayY = new int[6];

private int[] ratings;


public void getRanks(){

    arrayX[0] = 3;
    arrayX[1] = 4;
    arrayX[2] = 2;
    arrayX[3] = 6;
    arrayX[4] = 2;
    arrayX[5] = 5;

    arrayY[0] = 9;
    arrayY[1] = 7;
    arrayY[2] = 5;
    arrayY[3] = 10;
    arrayY[4] = 6;
    arrayY[5] = 8;

}


public void combine(){

    ratings = new int[arrayX.length + arrayY.length];
    System.arraycopy(arrayX, 0, ratings, 0,  arrayX.length);
    System.arraycopy(arrayY, 0, ratings, arrayX.length, arrayY.length);

    Arrays.sort(ratings);

}


public void print(){

    System.out.println(Arrays.toString(ratings));

}

public static void main(String[] args){

    TestaCombine tc = new TestaCombine();

    tc.getRanks();
    tc.combine();
    tc.print();

}
我得到的输出如下所示: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,3,4,5,5,6,6,7,8,9,10]


不了解所有0的来源。

这是因为您创建了一个大小为20的数组,其中只初始化了6个值,其余的值在数组初始化期间初始化,并且都填充为0。当组合大小为20的数组和大小为6的数组时,您将收到大小为26的数组,其中14个值为0


我还想向您推荐ApacheCommons库,它包含用于管理不同集合的一组很好的工具

这是因为您创建了一个大小为20的数组,其中只初始化了6个值,其余的值在数组初始化期间初始化,它们都填充为0。当组合大小为20的数组和大小为6的数组时,您将收到大小为26的数组,其中14个值为0


我还想向您推荐ApacheCommons库,它包含用于管理不同集合的一组很好的工具

这是因为您创建了一个大小为20的数组,其中只初始化了6个值,其余的值在数组初始化期间初始化,它们都填充为0。当组合大小为20的数组和大小为6的数组时,您将收到大小为26的数组,其中14个值为0


我还想向您推荐ApacheCommons库,它包含用于管理不同集合的一组很好的工具

这是因为您创建了一个大小为20的数组,其中只初始化了6个值,其余的值在数组初始化期间初始化,它们都填充为0。当组合大小为20的数组和大小为6的数组时,您将收到大小为26的数组,其中14个值为0


我还想向您推荐ApacheCommons库,它包含用于管理不同集合的一组很好的工具

请注意,
arrayX
的大小是20。默认情况下,
int
s在Java中的值为0。见:

对于int类型,默认值为零,即0

所以当你这样做的时候:

System.arraycopy(arrayX, 0, ratings, 0,  arrayX.length);

它还复制零。

请注意,
arrayX的大小是20。默认情况下,
int
s在Java中的值为0。见:

对于int类型,默认值为零,即0

所以当你这样做的时候:

System.arraycopy(arrayX, 0, ratings, 0,  arrayX.length);

它还复制零。

请注意,
arrayX的大小是20。默认情况下,
int
s在Java中的值为0。见:

对于int类型,默认值为零,即0

所以当你这样做的时候:

System.arraycopy(arrayX, 0, ratings, 0,  arrayX.length);

它还复制零。

请注意,
arrayX的大小是20。默认情况下,
int
s在Java中的值为0。见:

对于int类型,默认值为零,即0

所以当你这样做的时候:

System.arraycopy(arrayX, 0, ratings, 0,  arrayX.length);

它还复制零。

您正在将大小为6的数组与大小为20的数组组合。因此,生成的数组大小为26


但是您只指定了12个值,所以其余的值都是0。在对集合进行排序时,这也会将所有0放在数组的开头。

将大小为6的数组与大小为20的数组组合在一起。因此,生成的数组大小为26


但是您只指定了12个值,所以其余的值都是0。在对集合进行排序时,这也会将所有0放在数组的开头。

将大小为6的数组与大小为20的数组组合在一起。因此,生成的数组大小为26


但是您只指定了12个值,所以其余的值都是0。在对集合进行排序时,这也会将所有0放在数组的开头。

将大小为6的数组与大小为20的数组组合在一起。因此,生成的数组大小为26


但是您只指定了12个值,所以其余的值都是0。在对集合进行排序时,这也会将所有0放在数组的开头。

您是想将
arrayX
创建为
new int[6]
而不是
new int[20]
?您只初始化了其中20个值中的6个。当您执行int[]arrayX=new int[20]时,它可能会为您的数组分配0。arrayX和arrayY中都将包含0。我还没有找到解决您的问题的方法。您的
评分组合后的预期结果是什么?这是正确的吗<代码>[2,2,3,4,5,5,6,6,7,8,9,10]
我错过了,谢谢你的帮助!您是否打算将
arrayX
创建为
newint[6]
而不是
newint[20]
?您只初始化了其中20个值中的6个。当您执行int[]arrayX=new int[20]时,它可能会为您的数组分配0。arrayX和arrayY中都将包含0。我还没有找到解决您的问题的方法。您的
评分组合后的预期结果是什么?这是正确的吗<代码>[2,2,3,4,5,5,6,6,7,8,9,10]
我错过了,谢谢你的帮助!您是否打算将
arrayX
创建为
newint[6]
而不是
newint[20]
?您只初始化了其中20个值中的6个。当您执行int[]arrayX=new int[20]时,它可能会为您的数组分配0。arrayX和arrayY中都将包含0。我还没有找到解决您的问题的方法。您的
评分组合后的预期结果是什么?这是正确的吗<代码>[2,2,3,4,5,5,6,6,7,8,9,10]
我错过了,谢谢你的帮助!您是否打算将
arrayX
创建为
newint[6]
而不是
newint[20]