Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想从大arr复制到两个小arr_Java_Arrays - Fatal编程技术网

Java 我想从大arr复制到两个小arr

Java 我想从大arr复制到两个小arr,java,arrays,Java,Arrays,我想将我自己的值输入到20的大数组中,并将其复制到10的2个小数组中,然后必须输出第二个数组的值。我收到错误的ArrayIndexOutOfBoundsException我的代码有什么问题=| Scanner in = new Scanner(System.in); int[] test = new int[20]; int[] testA = new int[10]; int[] testB = new int[10]; for

我想将我自己的值输入到20的大数组中,并将其复制到10的2个小数组中,然后必须输出第二个数组的值。我收到错误的ArrayIndexOutOfBoundsException我的代码有什么问题=|

 Scanner in = new Scanner(System.in);
        int[] test = new int[20];
        int[] testA = new int[10];
        int[] testB = new int[10];
        for (int i = 0; i < test.length; i++){
            test[i] = in.nextInt();
        }
        for(int i = 0; i < 10; i++){
            testA[i]= test[i];
        }
        for (int i = 10; i < test.length; i++ ){
            testB[i] = test[i];
            System.out.println(testB[i]);
Scanner-in=新的扫描仪(System.in);
int[]测试=新int[20];
int[]testA=新的int[10];
int[]testB=新的int[10];
对于(int i=0;i
在第二个循环的第一步中,您将为
testB[10]
赋值,这会导致错误,因为
testB
的大小只有
10
(即
[0~9]

你需要改变

testB[i] = test[i];
System.out.println(testB[i]);

或者您可以使用:

for (int i = 0; i < 10; i++ ){
    testB[i] = test[i+10];
    System.out.println(testB[i]);
}
for(int i=0;i<10;i++){
测试B[i]=测试[i+10];
System.out.println(testB[i]);
}
备选方案:

System.arraycopy( test , 0, testA , 0, 10 );
System.arraycopy( test , 10, testB , 0, 10 );

它成功了。嗯?但他从10开始数到20,当他从另一个数组复制值时,我不明白,为什么会有[i-10]?@Predict_它通过做
testB[i]=test[i];
,您假设
testB
test
处于相同的速度,这是错误的。因此,这就像从测试值向后循环,或者您切断测试的开始位置以开始with@Predict_it没有。我添加了另一个选项。希望它能帮助您更好地理解。所以您从10开始,每个周期添加+1
System.arraycopy( test , 0, testA , 0, 10 );
System.arraycopy( test , 10, testB , 0, 10 );