1 public class StringTest3 { 2 3 public static void main(String[] args) { 4 //定义已知大串和小串 5 String maxstring = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"; 6 String minstring = "java"; 7 8 //调用getcount方法 9 int count = getcount(maxstring,minstring);10 System.out.println("java在这个大串中出现了"+count+"次");11 }12 13 //定义这个方法14 public static int getcount(String max,String min){15 //定义一个统计变量16 int count = 0 ;17 18 //在大串中查找小串是否存在,用 int indexOf(String str):返回指定字符在此字符串中第一次出现处的索引。19 int index = max.indexOf(min);20 21 //进行索引的判断22 while(index != -1){23 //统计变量自增24 count ++;25 26 //从得到的索引开始,再加上小串的长度,到字符串的最后,开始截取一个新的字符串,再把这个字符串赋值给大串,替换之前的大串27 // String substring(int start):从指定位置开始截取字符串,默认到末尾。 28 29 max = max.substring(index+min.length()); 30 31 index = max.indexOf(min);//再次在大串中查找小串是否存在32 }33 return count;34 35 }36 37 }
2、优化版 统计大串中小串出现的次数 需求:首先输入一个大串,接着输入一个小串,查询小串在大串中出现了几次 分析: 1、首先键盘录入2个字符串 A:定义一个统计变量=0; B:在大串中查找小串是否存在,用 int indexOf(String str):返回指定字符在此字符串中第一次出现处的索引。 a:如果返回的索引值是-1,则说明 大串中并不存在这个小串,输出统计变量 b:返回的若不是-1,则是这个小串的第一个字符在大串中的索引,这个时候统计变量++ C:从得到的索引开始,再加上小串的长度,到字符串的最后,开始截取一个新的字符串,再把这个字符串赋值给大串,替换之前的大串 String substring(int start):从指定位置开始截取字符串,默认到末尾。 D:再次从B开始循环,直到得到的新字符串没有了这个小串,也就是B中的a 以上分析定义为一个方法,方法的两个要素: a:返回值:int b:参数列表:两个字符串,大串和小串
1 import java.util.Scanner; 2 public class StringText4 { 3 4 public static void main(String[] args) { 5 //1、首先键盘录入2个字符串 6 Scanner sc = new Scanner(System.in); 7 System.out.println("请输入大串:"); 8 String maxstring = sc.nextLine(); 9 System.out.println("请输入小串:");10 String minstring = sc.nextLine();11 12 //调用getCount方法13 int count = getCount(maxstring,minstring);14 System.out.println(minstring+"在"+maxstring+"中出现了"+count+"次");15 16 }17 //定义方法18 public static int getCount(String max,String min){19 //定义一个统计变量20 int count = 0;21 //在大串中查找小串是否存在,用 int indexOf(String str):返回指定字符在此字符串中第一次出现处的索引。22 int index;23 while((index=max.indexOf(min))!= -1){24 //当得到的索引不是-1时25 count++;26 //从得到的索引开始,再加上小串的长度,到字符串的最后,开始截取一个新的字符串,再把这个字符串赋值给大串,替换之前的大串27 max = max.substring(max.indexOf(min)+min.length());28 }29 return count;30 }31 32 }