Java中的for循环?

时间:2013-11-02 21:28:32

标签: java

问题在于:

编写一个方法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循环过程中一直保持在三个位置?

1 个答案:

答案 0 :(得分:5)

“正确”代码中的“技巧”是每次向列表添加成员时,size()都会增长....结果,当你到达结束时你已经将列表的大小加倍了。

这里的关键组件是循环的结束条件:i < list.size()在循环迭代时评估 时间,并且每次都不同因为循环内部增加了内容。