2013-10-13 137 views
0

我有一个大小为5000的阵列A,以及任意大小但小于A的较小阵列B。我的小阵列总是产生新的值,我不想松散,因此我将它们添加到数组A并继续,但是我被卡住了,因为每当我尝试将较小的值复制到较大值而不是从它剩下的位置完全擦除之前的值,并且数组A变得等于数组B将阵列添加到另一个较大的阵列

offset = offset + B.length; 
System.arraycopy(B, 0, A, offset, B.length); 

这种说法是一个循环,更新B每次。

+0

那究竟是什么问题呢?你想达到什么目的? –

+0

你能在循环中显示完整的代码吗? –

回答

3

改为使用ArrayList s会更好。一个ArrayList本质上是一个无限容量的数组。你可以继续添加东西,它永远不会空间不足。它也为您添加了最后的东西,而无需计算结束索引。所以,如果你让ABArrayList S,那么你的代码变成:

A.addAll(B); 

就是这样。

+0

yess终于尝试与arraylist,有助于增加我的动态数组。 – happs

0

首先,看看这个链接,并看看解释length参数的部分:http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html。我觉得你的问题在于长度参数的传递。

而且声明offset = offset + B.length;应该来的循环之后,因为你传递一个可变大小A.length + B.length,像预想的那样只是B.length,这是你要放置数组B

A是的参数是目标数组。所以你必须重新声明A的长度为offset

希望这会有所帮助。

相关问题