问题在于:
编写一个方法stutter,它将String的StringList作为参数,并用该字符串中的两个替换每个字符串。例如,如果列表在调用方法之前存储值{“how”,“are”,“you?”},它应该存储值{“how”,“how”,“are”,“are” ,“你?”,“你?”}方法完成后执行。
我的代码:
public void stutter(ArrayList<String> list){
for(int i = 0; i < list.size() * 2; i+=2){
list.add(i, list.get(i));
}
}
但是,我的代码给出了IndexOutofBounds错误。正确的代码应该有for
循环:
for (int i = 0; i < list.size(); i += 2) {
为什么我的代码错了?当我看到正确答案时,我觉得这是错误的,因为每次都会将i
增加2。所以这不意味着你第三次循环,i
将是4,那将大于list.size(),这是3?
另一方面,在for
循环中,当您多次重新循环时,list.size()的值是否会发生变化?或者它会在整个for
循环过程中一直保持在三个位置?
答案 0 :(得分:5)
“正确”代码中的“技巧”是每次向列表添加成员时,size()都会增长....结果,当你到达结束时你已经将列表的大小加倍了。
这里的关键组件是循环的结束条件:i < list.size()
在循环迭代时评估 每 时间,并且每次都不同因为循环内部增加了内容。