尝试使用数组列表创建每个索引的双精度。复制无法正常进行

时间:2019-01-23 02:26:17

标签: java loops for-loop arraylist

示例输入为{1、2、3}。示例输出为{1、1、2、2、3、3}。我得到的是{1、1、2、3、2}。我的代码是

public void doubleList(ArrayList<String> string){
    int length = string.size();
    string.add(1, string.get(0));
    for(int x = 2; x < length; x++){
    string.add(x+2, string.get(x));
    }
}

我不确定我要去哪里哪里,但我想寻求帮助,因为这对我来说似乎很有意义。我在做什么错了?

5 个答案:

答案 0 :(得分:0)

数组的长度仍然是3,所以到达第一个循环时它将停止 会是这样

长度:3

arraylist:{1,1,2,3}

firstloop:{1,1,2,3,2} x = 3(因为您分配了x = 2) 我认为您应该将要复制的数组存储到另一个数组中,并将其分配给这样的数组

public void doubleList(ArrayList<String> string){
    ArrayList<String> arrCpy=(ArrayList)string.clone();
    int length = string.size();

    for(int x = 0; x < length; x++){
        string.add(x*2, arrCpy.get(x));
    }

}

答案 1 :(得分:0)

画出你想发生的事情:

1  2  3

1  1  2  3
│  ↑
└──┘ copy index 0 to index 1

1  1  2  2  3
      │  ↑
      └──┘ copy index 2 to index 3

1  1  2  2  3  3
            │  ↑
            └──┘ copy index 4 to index 5

现在您只需要编写执行此操作的代码即可。

答案 2 :(得分:0)

您要遍历列表并添加每个元素的重复项。但是,添加之后,列表中将有一个附加元素,因此每次迭代都必须向前跳两个步骤。

int originalSize = list.size();
for(int i = 0; i < originalSize; i++) {
    list.add(2*i, list.get(2*i));
}

Here是一个有效的示例。

答案 3 :(得分:0)

这是我的解决方案,首先复制索引0,将其添加到当前索引+ 1,然后再将索引增加2,依此类推。

  public static void doubleList(ArrayList<String> string){
      for(int x = 0; x < string.size(); x+=2){
          string.add(x + 1, string.get(x));
      }
  }

答案 4 :(得分:0)

尝试一下

public static void doubleList(ArrayList<String> string) {
        int length = string.size();
        int y = 0;      
        for (int x = 0; x < length; x++) {          
            string.add(y, string.get(y));
            y+=2;
        }
    }