日期:2014-05-20  浏览次数:20756 次

拜求大神解惑,帮我加下注释好吗??看看题目中的疑问...
/*【程序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);

   
}
}

------解决方案--------------------
t是指针。指向sub。sub和str逐一比较
------解决方案--------------------
t是sub中第几个字符,i是str中第几个字符
------解决方案--------------------
i是原串的起始位置,t是偏移量。对于原串字符为src.charAt(i+t),对于子串字符为sub.charAt(t)
------解决方案--------------------
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++;
}