package forty_nine;import java.util.Scanner;/*
 * 题目:计算字符串中子串出现的次数  
 * */public class forty_nine {
public static void main(String[] args){
int count=0;
Scanner sc=new Scanner(System.in);
System.out.println("请输入字符串:");
String str1=sc.nextLine();
System.out.println("请输入子字符串:");
String str2=sc.nextLine();
if(str1.equals("")||str2.equals("")){
System.out.println("你没有输入字符串或子字符串,无法比较!");
System.exit(0);
}else{
for(int i=0;i<=str1.length()-str2.length();i++){
if(str2.equals(str1.substring(i, str2.length()+i)))
////这种比法有问题,会把"aaa"看成有2个"aa"子串
count++;
}
System.out.println("子字符串出现的次数为:"+count);
}
}
}请输入字符串:
abssssssc
请输入子字符串:
ss
子字符串出现的次数为:5有没有别的方法结果是为1或没有?

解决方案 »

  1.   

    直接split,然后看分离出来的数组长度。也可以用 Pattern.match()做匹配搜索。
      

  2.   

    public static void main(String[] args) {
    String s1 = "dsasdfvvvdddvvdddv";
    String s = "vv";//      Pattern p = Pattern.compile("abc",Pattern.CASE_INSENSITIVE);
            
    Pattern pattern = Pattern.compile(s);
    Matcher matcher = pattern.matcher(s1);
            int count = 0;
            while(matcher.find()){
                  count ++;
            }
            System.out.println(count);
    }