为什么main方法中执行完第一个方法完之后,后面的代码都不执行了?

package chap05;

public class StringFindTest {


public static void testFind(String str, String substr) {
    
    int count = 0;
    int pos = 0;
    
    do{
        if(str.indexOf(substr, pos) >= 0){
            
            count++;
            System.out.println("子串第"+count+"次出现的位置是:"+str.indexOf(substr, pos));
            pos = str.indexOf(substr, pos) + substr.length() - 1;
        }
        
    }while(pos >= 0);
    
}

public static void main(String[] args) {
    
    //StringFindTest test = new StringFindTest();
    String str = "AAA01234AA01234aa012340aAA01234Aa01234aa";
    String substr = "AA";
    //不区分大小写
    testFind(str.toUpperCase(), substr.toUpperCase());
    //区分大小写
    testFind(str, substr);
}

}

运行结果

子串第1次出现的位置是:0
子串第2次出现的位置是:1
子串第3次出现的位置是:8
子串第4次出现的位置是:15
子串第5次出现的位置是:23
子串第6次出现的位置是:24
子串第7次出现的位置是:31
子串第8次出现的位置是:38


如上,请问是为什么?

阅读 2.4k
1 个回答

跳出do..while循环即可,要不然if(str.indexOf(substr, pos) >= 0)和while(pos >= 0)一直重做。
加个else{break;};

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题