Java 尝试使用数组列表创建每个索引的双精度。复制不会';我不能正常工作
示例输入是{1,2,3}。示例输出为{1,1,2,2,3,3}。我得到的是{1,1,2,3,2}。我的代码是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)
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()
必须再移动一个值,因此对性能影响很小。