/*【程序49】 
题目:计算字符串中子串出现的次数 */import java.util.*; public class Test49{public static void main(String[] args){    Scanner sc=new Scanner(System.in);
    System.out.print("请输入一个字符串:");
    String str=sc.next();
    System.out.print("请输入要统计的子串:");    
    String sub=sc.next();
    char[] c1;
    char[] c2;
    c1=str.toCharArray();
    c2=sub.toCharArray();
    int count=0;
    int t;
    int m=str.length()-sub.length();
    if(m<0)
       System.out.println("字符串中不含"+sub+"子串");
    else{
       for(int i=0;i<str.length();i++)
       {
          t=0;
          while(t<sub.length()&&c2[t]==c1[i+t])  //c2[t]==c1[i+t] 这句怎么理解??
          {
            t++;              
          }
          if(t==sub.length())   count++;     
       }
    }
    System.out.println(sub+"在"+str+"中出现的次数是:"+count);    
}
}

解决方案 »

  1.   

    t是指针。指向sub。sub和str逐一比较
      

  2.   

    t是sub中第几个字符,i是str中第几个字符
      

  3.   

    i是原串的起始位置,t是偏移量。对于原串字符为src.charAt(i+t),对于子串字符为sub.charAt(t)
      

  4.   

      c1//一个字符串
      str//一个字符串
      c2//要统计的子串
      sub//要统计的子串  for(int i=0;i<str.length();i++) //i=0->一个字符串的長度
         {
         t=0;
         while(t<sub.length()&&c2[t]==c1[i+t]) //t<要统计的子串的長度&& 要统计的子串
          跟一个字符串逐一比较, t是sub中第几个字符,i+t是str中第几个字符         {
           t++;   
           }
           if(t==sub.length()) count++;   
         }