gpt4 book ai didi

java - System.arraycopy 返回 arrayoutofboundsexception

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:03:41 27 4
gpt4 key购买 nike

我今天了解了 java 中的 arraycopy() 函数,并且在代码中使用它。但我不断收到 ArrayOutOfBoundsException。我试图找出一个解决方案并在谷歌上搜索解决方案,但我似乎无法解决它。如果有人可以看一下,这将很有帮助

System.arraycopy(a, 0, b, 1, N + 1);

这里,“a”是一个长度为“N”的数组,b是另一个长度为“N+1”的数组我想将数组“a”的所有元素复制到数组“b”,这样数组“a”的所有元素都从数组“b”的第二个索引开始,为数组中的另一个元素留出空间“b”

如果需要的话,这里是完整的代码:

import java.util.Random;
import java.util.Scanner;

public class JavaApplication24 {

public static long DC;
public static long DM1;
public static long DM;

private static int[] Insrtn_sort(int[] a, int N) {

int t, i;
int b[] = new int[N + 1];
DC = 0;
DM = 0;
DM1 = 0;

b[0] = Integer.MIN_VALUE;
System.arraycopy(a, 0, b, 1, N + 1);

for (int j = 1; j < N + 1; j++) {
t = b[j];
i = j - 1;
while (t < b[i]) {
b[i + 1] = b[i];
i--;
DC++;
DM1++;
}
b[j + 1] = t;
DM++;
}

return b;
}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random r = new Random();
float StartTime, EndTime, TotalTime;

int N = sc.nextInt();
int[] a = new int[N];
for (int i = 0; i <= N - 1; i++) {
a[i] = r.nextInt();
}

StartTime = System.currentTimeMillis() / 1000;
Insrtn_sort(a, N);
EndTime = System.currentTimeMillis() / 1000;

TotalTime = StartTime - EndTime;

for (int i = 1; i <= N - 1; i++) {
System.out.println(a[i]);
}
System.out.println("Time taken for sorting: " + TotalTime);
System.out.println("Total number of data comparisons: " + DC);
System.out.println("Total number of data movements: " + DM + DM1);

}

}

最佳答案

您的a 数组索引是从0 到[N-1],长度为(N) 和b 数组索引是从 0 到 N,长度为 (N+1) 那么你必须写 System.arraycopy(a, 0, b, 1, N );

关于java - System.arraycopy 返回 arrayoutofboundsexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44015025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com