Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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 尝试使用数组列表创建每个索引的双精度。复制不会';我不能正常工作_Java_Loops_For Loop_Arraylist - Fatal编程技术网

Java 尝试使用数组列表创建每个索引的双精度。复制不会';我不能正常工作

Java 尝试使用数组列表创建每个索引的双精度。复制不会';我不能正常工作,java,loops,for-loop,arraylist,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)

示例输入是{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));
    }
}
public void双重列表(ArrayList字符串){
int length=string.size();
string.add(1,string.get(0));
对于(int x=2;x

我不确定哪里出了问题,但我想得到一些帮助,因为这对我来说似乎是有意义的。我做错了什么?

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

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));
    }

}
长度:3

数组列表:{1,1,2,3}

第一个循环:{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));
    }

}
public void双重列表(ArrayList字符串){
ArrayList arrCpy=(ArrayList)string.clone();
int length=string.size();
对于(int x=0;x
绘制您希望发生的事情:

123
1  1  2  3
│  ↑
└──┘ 将索引0复制到索引1
1  1  2  2  3
│  ↑
└──┘ 将索引2复制到索引3
1  1  2  2  3  3
│  ↑
└──┘ 将索引4复制到索引5

现在,您只需要编写代码来执行此操作。

您希望在列表中循环并添加每个元素的副本。但是,添加之后,列表中还有一个额外的元素,因此每次迭代都必须向前跳两步

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

这是一个工作示例。

这是我的解决方案,首先复制索引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));
      }
  }
publicstaticvoiddoublelist(arrayliststring){
对于(int x=0;x
试试这个

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;
        }
    }
publicstaticvoiddoublelist(arrayliststring){
int length=string.size();
int y=0;
对于(int x=0;x
你调试过看发生了什么吗?可以复制到同一个索引中。嗯,我能问一下如何才能像你那样画箭头吗?@dannguyen我在网上搜索并复制/粘贴了↑ 直接从搜索结果列表中,我搜索并复制/粘贴了页面中的行字符。@Gendarme复制到同一索引只会使
add()
必须再移动一个值,因此对性能影响很小。