java - 关于While,break的问题

查看:251
本文介绍了java - 关于While,break的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

public class SearchString {

public static void main(String[] args) {
    String s1 = "abcaaaaaaaabcabc";
    String s2 = "abc";
    int len = s2.length();
    int pos = 0;
    int count = 0;
    while (true) {
        if (s1.indexOf(s2, 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.indexOf(s2, a);
            count++;
        }
    }
}

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

解决方案

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

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

这篇关于java - 关于While,break的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆