【发布时间】:2017-09-22 02:52:45
【问题描述】:
我正在尝试将一个数组或数字范围从 0 到 N 拆分为 N/n 个块。
我目前正在制作一个包含 N 个元素的数组列表
List<String> arrayList = new ArrayList<String>();
for (int i = 0; i < N; i++) {
arrayList.add(String.valueOf(i));
}
System.out.println(arrayList);
int numOfChunks = (int)Math.ceil((double)arrayList.size() / numOfchunks);
int[][] output = new int[numOfChunks][];
for(int i = 0; i < numOfChunks; ++i) {
int start1 = i * numOfChunks;
int length = Math.min(arrayList.size() - start1, numOfChunks);
int[] temp = new int[length];
System.arraycopy(arrayList, start1, temp, 0, length);
output[i] = temp;
}
System.out.println(output);
但是,我一直在这一行收到错误
System.arraycopy(arrayList, start1, temp, 0, length);
我相信这是因为我使用的是数组列表。我尝试过使用常规数组,但出现 NegativeArraySizeException 错误。
【问题讨论】:
-
如果你想复制一个ArrayList,使用
new ArrayList( old.subList(start,start+length) ); -
您错误地使用了变量
numOfchunks?您在第 9 行的声明语句中使用变量?