Java:System.arraycopy用于阵列的两部分
假设有一个数组声明为Java:System.arraycopy用于阵列的两部分,java,arrays,Java,Arrays,假设有一个数组声明为 int[] unordered = {3, 4, 5, 1, 2}; 我想创建一个新数组a,它的大小比无序数组大25%,无序数组的原始内容是有序的,后面是尚未赋值的索引,即1,2,3,4,5,0,0。如何使用System.arraycopy执行此操作?目前,我拥有的是: int[] a = new int[(int)(unordered.length*.25)]; System.arraycopy(items, 3, a, 0, unordered.length-3);
int[] unordered = {3, 4, 5, 1, 2};
我想创建一个新数组a,它的大小比无序数组大25%,无序数组的原始内容是有序的,后面是尚未赋值的索引,即1,2,3,4,5,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);
运行此代码时,会出现数组越界错误。更改此代码:
int[] a = new int[(int)(unordered.length*.25)];
致:
由于int cast正在降低数值,例如3.5->3等。您应该在数组大小中添加一个
同时乘以1.25以增加数组大小,因为乘以0.25会减小大小。更改此项:
int[] a = new int[(int)(unordered.length*.25)];
致:
由于int cast正在降低数值,例如3.5->3等。您应该在数组大小中添加一个
同样,乘以1.25可增大数组大小,因为乘以0.25可减小数组大小。乘以1.25可使数组增大25%。现在你正在使它变小。乘以1.25,使数组变大25%。现在你把它变小了。我也刚刚意识到我必须乘以1.25,而不是0.25——愚蠢的错误。谢谢,现在可以用了!我还意识到我必须乘以1.25,而不是0.25——这是一个愚蠢的错误。谢谢,现在可以用了!