关于While,break的问题
澳门新葡京官网
澳门新葡京官网
当前位置 : 澳门新葡京官网 > 新葡京娱乐场

关于While,break的问题

请问为什么这段代码while循环内一旦进入了else后面部分,之后的while循环就无法再进入前半个分支了?我看if 后面的条件应该是满足的啊,运行结果由于进入不了第一个循环就没法break了。求大神指教:

public class SearchString {

public static void mainString[] args {
    String s1 = "abcaaaaaaaabcabc";
    String s2 = "abc";
    int len = s2.length;
    int pos = 0;
    int count = 0;
    while true {
        if s1.indexOfs2, pos == -1 {
            System.out.println"Search Over, result count=" + count;
            break;
        } else {
            System.out.println"Position" + count + 1 + " is " + pos;
            int a = pos + len;
            pos = s1.indexOfs2, a;
            count++;
        }
    }
}

}
运行结果就是-1 10 13 -1 10 13无限循环了

因为当第三次查询的时候 无法匹配到结果因此返回的值-1, indexOf的第二个参数如果小于0的话将被当作0处理。
因此又开始了第一次的循环。

你可以断点调试下,结果很清楚

当进入第二次循环的时候进入了else,pos变为13。下次的循环也就是当进入第三次循环的时候还是进入了else。
这次在else里面a变成了16,pos则为-1,下次的循环s1,indexOfs2, pos为0,还是进入else了,所以产生了死循环。

我觉得你需要每次在else里面不要改变pos,而是要直接截s1字符串的后半部分。

栏目列表

广告位

澳门新葡京官网