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

这是我的代码:

     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的来源。

最佳答案

请注意,arrayX的大小为20。默认情况下,int在Java中的值为0。请参见JLS - 4.12.5. Initial Values of Variables


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


因此,当您这样做时:

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


它也复制零。

09-27 14:45