/**
* 任意输入一串字符,给定要插找的字符小串,输出一共出现了多少次
*/
package day12;
import java.util.Scanner;
public class CountDemo {
public static void main(String[] args) {
System.out.println("请输入字符串:");
Scanner sc = new Scanner(System.in);
String maxString = sc.nextLine();
System.out.println("请输入要查询的字符串:");
String minString = sc.nextLine();
// 功能模块
int count = getCount(maxString, minString);
System.out.println(count);
int pos = getPos(maxString, minString);
System.out.println(pos);
}
/**
* 查找统计功能 (while实现)
*
* @param maxString
* 大字符串
* @param minString
* 小字符串
* @return 返回统计查找到的次数
*/
public static int getCount(String maxString, String minString) {
// 计数
int count = 0;
// indexOf(String str) --->返回指定字符串在此字符串中第一次出现的索引
int index = maxString.indexOf(minString);
// 不知道要循环到少次
// 只要index的值不等于-1
while (index != -1) {
count++;
/* 类似s -=1;
* String substring(int index)--->截取字符串,返回从指定位置开始截
* 取后的字符串,原字符串长度不变
*
* 就是把查找过的字符串截掉,重新赋
*/
maxString = maxString.substring(index + minString.length());
// 再查询一次,是否还包含指定字符串
index = maxString.indexOf(minString);
}
return count;
}
/**
* for循环实现
* @param maxString
* @param minString
* @return
*/
public static int getPos(String maxString, String minString) {
int count = 0;
// 使用for死循环,一直 i=0 ,
// for (int i = 0; i < maxString.length();) {
for(;;){
int index = maxString.indexOf(minString);
if (index != -1) {
count++;
maxString = maxString.substring(index + minString.length());
index = maxString.indexOf(minString);
} else {
break;
}
}
return count;
}
}
|
|