以下是一段歌词,请从这段歌词中统计出朋友出现的次数
“这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。
朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。”;
提示:使用String方法indexOf、substring。
实现方法不唯一,此方法仅作初学者(自己)参考。。。。。
两个方法API介绍
实现代码:
package com.string;
public class String_count {
public static void main(String[] args) {
int num = 0;
String str1 = "这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。";
String str2 = "朋友";
int index = str1.indexOf(str2);
while (index!=-1){
num++;
str1=str1.substring(index+2);//截取朋友后的字符串
index=str1.indexOf(str2);
}
System.out.println(num);
}
}
实现结果:
3
后续改进:
方法不唯一,这里还有两个方法,大家请看第一个:
方法二
package com.string;
public class String_count2 {
public static void main(String[] args) {
String str1 = "这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我";
String str2 = "朋友";
String[] arr = str1.split(str2);
System.out.println(str2+"一共出现了:"+(arr.length-1)+"次");
}
}
实现结果:
但是如果将统计字符串str1首尾都加一个str2,就会出现bug
String str1 = "朋友这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我朋友";
结果:
方法三:
package com.string;
public class String_count3 {
public static void main(String[] args) {
String str1 = "朋友这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。朋友";
String str2 = "朋友";
int startLen = str1.length();
str1 = str1.replace(str2,"");
int endLen = str1.length();
int iCount = (startLen-endLen)/str2.length();
System.out.println(str2+"一共出现了"+iCount+"次");
}
}