Java 我想从大arr复制到两个小arr
我想将我自己的值输入到20的大数组中,并将其复制到10的2个小数组中,然后必须输出第二个数组的值。我收到错误的ArrayIndexOutOfBoundsException我的代码有什么问题=|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
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 );