假设我有一个声明为
的数组int[] unordered = {3, 4, 5, 1, 2};
我想创建一个新数组a,其大小比unordered
大25%,原始内容按顺序排列,然后是尚未赋值的索引(即1,2,3,4,5,0,0,0)。我如何使用System.arraycopy执行此操作?目前,我所拥有的是:
int[] a = new int[(int)(unordered.length*.25)];
System.arraycopy(items, 3, a, 0, unordered.length-3);
System.arraycopy(items, 0, a, unordered.length-3, 3);
当我运行此代码时,我得到一个数组越界错误。
答案 0 :(得分:5)
改变这个:
int[] a = new int[(int)(unordered.length*.25)];
要:
int[] a = new int[(int)(unordered.length*1.25) + 1];
由于int cast正在降低数量(例如3.5 - > 3等),您应该在数组大小中添加一个。
还要乘以1.25以增加数组大小,乘以0.25会减小大小。