我正在尝试将两个数组合并为一个大数组。
但是我不明白为什么它不起作用。
这是我的代码:
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);
它也复制零。