来到黑马的基础班学习也即将接近尾声,马上就要开始就业班入学考试,在这篇文章分享一下之前做过的一道题目,因为没有用到对应类的方法,可能看起来会有点乱,有种拼凑的感觉:
题目:1.键盘录入一个长字符串,再录入一个短字符串
2.统计短字符串在长字符串中出现的次数
3.代码运行打印格式:
请输入长字符串:javajavajava I love java l like jajavava I enjoy javajavajava
请输入短字符串:java
控制台输出:小字符串java,在大字符串javajavajava I love java l like jajavava I enjoy javajavajava中共出现8次
在开始做这个题目的时候,没有想到使用String的indexOf去实现,所以单纯用了substring和equalsIgnoreCase去做的
实现代码:
public static void main(String[] args) {
//键盘录入字符
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个长字符:");
String str1=sc.nextLine();
System.out.println("请输入一个短字符:");
String str2=sc.nextLine();
//判断短字符在长字符出现的次数
//计数
int count=0;
//for循环获取长字符的x位数字(x是指短字符长度),从第一位开始截取x位字符并定义成字符串与短字符内容比较,
//下次从第二位开始截取...
for(int i=0;i<str1.length();i++){
//要判断i+str2.length()【截取的最后一位的下标】的长度在str1的下标内
//---截取的最后一位的下标不能超过长字符的长度
if((i+str2.length()) <= (str1.length())){
String strJieQu=str1.substring(i, i+str2.length());
//打印截取字符
//System.out.println(strJieQu);
if(str2.equalsIgnoreCase(strJieQu)){
count++;
}
}
}
System.out.println("小字符串:"+str2+",在大字符串:"+str1+"中共出现"+count+"次");
}
分析:1、首先是键盘录入两个字符串-长字符串、短字符串
2、定义一个变量,用于计算对应短字符串出现的次数
3、对长字符串进行遍历截取,首先是从第一位(索引=0)遍历,从第一位开始截取x位字符并定义成字符串与短字符内容比较,下一次遍历则是在第二位开始….依此类推
4、对比成功的语句体需要对之前定义的变量++
5、对应输出打印语句
注意点:对长字符串截取需要注意截取位置不能超过长字符串的长度,否则程序会报错
这里,老师给出的答案是用的indexOf实现的,程序看起来会更清晰也更易懂,没有使用这个方法实现是因为对一些方法的使用场景还是不熟悉,我是需要加强的,后续会继续对jdk_api操作手册学习下去。
|
|