java-For循环可以在当前迭代中“看到”即将出现的值吗?

我正在通过CodingBat的Java练习进行工作,遇到了CountXX problem,它计算xx在字符串中出现的次数.这是我解决的方法(我没想到它会起作用):

int countXX(String str) {
    int count = 0;

    for (int i = 0; i < str.length() - 1; i++) {

        if ((str.charAt(i) == 'x') && (str.charAt(i+1) == 'x'))
            count++;
    }

    return count;
}

我的问题是:for循环的迭代如何“向前看”下一个迭代?在这种情况下,它可以看到一个字符的值以及后续迭代的字符.如果它可以展望未来的迭代,那岂不是“整数倍”的“失败点”吗? (我肯定缺少什么!)

解决方法:

迭代不是“向前看”或类似的事情.实际上,for循环不知道您要遍历字符串的索引.它所知道的就是您想要它

>在开始迭代之前将i设置为0
>当我变得大于某个数字时结束迭代,并且
>每次迭代后将i加1.

就是这样将i变量作为字符串的索引的任何解释都在循环体内完成.

一旦进入循环,您就可以指望我处于某个范围内(即,从零(包括零)到str.length()-1,不包括在内).这使我成为从字符串中获取两个相邻字符的合适人选,这正是您的代码所要做的.

上一篇:javascript-使用then()使函数在节点中顺序运行


下一篇:MySQL:遍历数据库并在其上运行存储过程