我正在通过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,不包括在内).这使我成为从字符串中获取两个相邻字符的合适人选,这正是您的代码所要做的.