Java中循环和String类indexOf(,)方法的关系

StringnumOne="12345612451121";StringnumTwo="1";System.out.print("一段字符串"+numOne+"查找"+n... String numOne="12345612451121";
String numTwo="1";
System.out.print("一段字符串"+numOne+"查找"+numTwo+"出现的位置");
System.out.print("“"+numTwo+"”"+"出现的位置是:");
for(int i=0;(i=numOne.indexOf(numTwo,i))>=0;i++) {
System.out.print(i + "\t");
}
这里的循环为什么可以跳出?i的值为什么不是+1递增?
展开
 我来答
雪飞潇潇
推荐于2016-02-23 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:867万
展开全部
第一个问题,循环为什么可以跳出?

        当循环条件不满足的时候,也就是(i   =   numOne.indexOf(numTwo, i)) 的值<0  的时候就能退出跳出

            

numOne.indexOf(numTwo, i)表示在字符串1里查找字符串2的位置,

如果找不到   或者    索引超过了字符串长度,

函数   就会返回-1,如果是-1.那么-1>=0 肯定是假,所以循环就会退出


比如12345678   那么循环会在第一次找到1,后面找不到就返回-1;循环就退出了

比如 ab             索引从0开始.   b的索引是1,  如果这个时候"ab".index("b",2); 指定的索引下标2,超过了最大的索引限度, 也返回-1;


indexOf(int ch, int fromIndex) 
          返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
为什么不是+1递增?

其实本来i要加1递增的,因为循环条件里,又改变了i的值

第一次循环 numOne.indexOf(numTwo, i) 的结果是0,修改了i的值为0;

              条件满足 (i = 0)>=0; 循环结束后i增加1,  那么i  = 1;

第二次循环    numOne.indexOf(numTwo, i)的结果是6,修改了i的值为6;

                 条件满足 (i = 6)>=0; 循环结束后i增加1,  那么i  = 7;


第三次循环    numOne.indexOf(numTwo, i)的结果是6,修改了i的值为10;

                 条件满足 (i = 10)>=0; 循环结束后i增加1,  那么i  = 11;


...............同理中间的其他次循环..............


最后的循环    (上次循环后,i=14)  i超过了字符串的最大索引13,   numOne.indexOf(numTwo, i)就返回-1,修改了i的值为-1;

                 条件不满足 (i = -1)>=0;   退出循环,.结束

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式