示例输入为{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));
}
}
我不确定我要去哪里哪里,但我想寻求帮助,因为这对我来说似乎很有意义。我在做什么错了?
答案 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;
}
}