为什么我不能在java中复制数组的一部分?

时间:2013-12-12 01:35:30

标签: java arrays class

我是java的新手,但之前已经用其他语言做过一些编程。我有一个我声明的数组。这个是基本设备,每个basicSimple *都已在前面正确声明:

//Creating template...
Item[] basicSet = new Item[15];
basicSet [0] = basicSimpleShoes;
basicSet [2] = basicSimplePants;
basicSet [4] = basicSimpleShirt;
basicSet [6] = basicSimpleGloves;

我正在尝试将数组复制到其他一些数组,每个数组都有一种可能的格式,其中一种看起来像这样:

//Strongarm set...
Item[] strongarmBeginnerSet = new Item[15];
strongarmBeginnerSet [0,6] = basicSet[0,6];
strongarmBeginnerSet [9] = basicSimpleShortsword;
strongarmBeginnerSet [10] = basicSimpleShield;

同样,之前正确声明了basicSimple * Items。我继续得到一个错误,一个关于缺少结束括号的东西,但我找不到它的位置。我是否必须单独声明每个部分,或者是否有一个我不知道这个场景的功能?

4 个答案:

答案 0 :(得分:4)

这在Java中不起作用,其他编程语言(比如Python)的切片表示法存在,但Java不存在:

strongarmBeginnerSet[0,6] = basicSet[0,6]; // compiler reports a syntax error!

您必须依次复制每个元素(我假设您打算复制并包含位于索引6的第七个元素):

for (int i = 0; i < 7; i++)
    strongarmBeginnerSet[i] = basicSet[i];

或者,使用System.arraycopy()

System.arraycopy(basicSet, 0, strongarmBeginnerSet, 0, 7);

答案 1 :(得分:0)

strongarmBeginnerSet [0,6] = basicSet[0,6];在Java中不是有效的语法。您需要使用for循环。

答案 2 :(得分:0)

strongarmBeginnerSet [0,6] = basicSet[0,6];是Java的无效语法。

您可以使用System.arraycopy来获得相同的效果......

像...一样的东西。

System.arraycopy(basicSet, 0, strongarmBeginnerSet, 0, 6);

例如......

答案 3 :(得分:0)

要复制数组的一部分,请使用:

strongarmBeginnerSet [6] = Arrays.asList(basicSet).subList(0,7).toArray();