Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:System.arraycopy用于阵列的两部分_Java_Arrays - Fatal编程技术网

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——这是一个愚蠢的错误。谢谢,现在可以用了!