用Java案例统计分析"凌空抽射"次数
下面我用一个完整的Java案例,演示如何统计一段足球比赛文字解说中"凌空抽射"出现的次数,并判断"多不多"。

需求分析
- 输入:一段足球比赛的文字解说
- 目标:统计"凌空抽射"关键词出现次数
- 输出:次数 + 判断是否"频繁"(比如超过3次算多)
完整代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class VolleyShotCounter {
// 阈值:超过这个次数认为"多"
private static final int THRESHOLD = 3;
public static void main(String[] args) {
// 模拟一段足球比赛解说文本
String commentary =
"第12分钟,前锋在禁区外一脚凌空抽射,球稍稍偏出。\n" +
"第28分钟,中场球员接到传中后凌空抽射,被门将扑出。\n" +
"第45分钟,边锋下底传中,中锋头球攻门。\n" +
"第63分钟,又是他!一记精彩的凌空抽射直挂死角!\n" +
"第78分钟,后卫解围不远,对方球员凌空抽射打飞。\n" +
"第89分钟,禁区内混战,最终被门将没收。";
// 调用统计方法
int count = countKeyword(commentary, "凌空抽射");
System.out.println("=== 统计结果 ===");
System.out.println("『凌空抽射』出现次数:" + count);
// 判断多不多
if (count > THRESHOLD) {
System.out.println("凌空抽射次数偏多,比赛节奏激烈!");
} else if (count == THRESHOLD) {
System.out.println("凌空抽射次数适中。");
} else {
System.out.println("凌空抽射次数不多,比赛以地面配合为主。");
}
}
/**
* 统计关键词在文本中出现的次数(支持中文,不区分大小写)
*/
public static int countKeyword(String text, String keyword) {
if (text == null || keyword == null || keyword.isEmpty()) {
return 0;
}
Pattern pattern = Pattern.compile(Pattern.quote(keyword));
Matcher matcher = pattern.matcher(text);
int count = 0;
while (matcher.find()) {
count++;
}
return count;
}
}
运行结果
=== 统计结果 ===
『凌空抽射』出现次数:4
凌空抽射次数偏多,比赛节奏激烈!
代码要点解析
| 要点 | 说明 |
|---|---|
Pattern.quote(keyword) |
把关键词转义,避免关键词中含正则特殊字符 |
matcher.find() |
循环查找每一处匹配 |
阈值 THRESHOLD |
可配置,方便调整"多不多"的标准 |
| 注释文本 | 用 \n 换行,更贴近真实解说 |
扩展方向
- 读取文件统计:把解说文本放到
.txt文件,用Files.readString(Path.of("match.txt"))读取。 - 多关键词统计:用
Map<String, Integer>批量统计"凌空抽射""头球""远射"等。 - 区分球员:用正则
(.{2,4})凌空抽射提取是谁完成的射门。 - 不区分大小写(英文场景):
Pattern.compile(keyword, Pattern.CASE_INSENSITIVE)。
- 用 Java 统计"凌空抽射"次数非常简单,核心就是正则匹配 + 计数。
- "多不多"取决于你设定的阈值,本例中以 3 次为界。
- 该模式可复用到任何关键词统计场景,如体育解说、评论分析、日志统计等。
如果你有具体的比赛文本或想统计的关键词,可以发给我,我帮你改成对应的版本 👍