请高手赐教,为什么一直报错啊???
==============================================================================
public class StringDemo { /**
 * @param args
 * 计算字符串中子串出现的次数
 */
public static void main(String[] args) {
String superStr="123asd456jkl1123asasd";
String subStr="as";
int count=0;
for(int i=0;i<superStr.length()-2;i++){
for(int j=1;j<subStr.length();j++){
if(superStr.subSequence(i,j).equals("as")){
count++;
}
}
}
System.out.println(count);
}
}----------------------------------------------------------------------------------------------------
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1938)
at day08_myself.StringDemo.main(StringDemo.java:15)

解决方案 »

  1.   

    你这个代码思路有点问题,可以参照如下修改,即可工作。
    另:
      想统计子串的个数,采用indexof或正则表达式可以有更简洁的算法,你不妨思考一下public class StringDemo { /**
    * @param args
    * 计算字符串中子串出现的次数
    */
    public static void main(String[] args) {

    String superStr="123asd456jkl1123asasd";
    String subStr="as";
    int count=0;
    for(int i=0;i<superStr.length()-1;i++){
    for(int j=1;j<subStr.length();j++){
    if(superStr.subSequence(i,i+2).equals("as")){
    count++;
    }
    }
    }
    System.out.println(count);
    }
    }
      

  2.   

    package day08_myself;public class StringDemo2 {    /**
        * @param args
        * 计算字符串中子串出现的次数
        */
    public static void main(String[] args) {
    String superStr = "123asd456jkl1123asasdaas";
    String subStr = "as";
    int count = 0;
    for (int i = 0; i < superStr.length() - 1; i++) {
    if (superStr.subSequence(i, i + 2).equals("as")) {
    count++;
    }
    }
    System.out.println(""+count);
    }
    }