统计脚后跟传球成功次数
下面我用一个完整的 Java 案例来演示如何统计足球比赛中"脚后跟传球"成功的次数。

需求分析
- 一次传球需要知道:传球方式(脚后跟 / 普通 / 头球等)和是否成功
- 我们要统计的是:方式为脚后跟 且 结果为成功 的次数
完整代码示例
import java.util.ArrayList;
import java.util.List;
// 传球记录类
class Pass {
private String playerName; // 传球球员
private String passType; // 传球方式:脚跟/普通/头球
private boolean success; // 是否成功
public Pass(String playerName, String passType, boolean success) {
this.playerName = playerName;
this.passType = passType;
this.success = success;
}
public String getPlayerName() { return playerName; }
public String getPassType() { return passType; }
public boolean isSuccess() { return success; }
@Override
public String toString() {
return playerName + " - " + passType + " - " + (success ? "成功" : "失败");
}
}
public class HeelPassStats {
public static void main(String[] args) {
// 1. 模拟一场比赛的传球数据
List<Pass> passes = new ArrayList<>();
passes.add(new Pass("梅西", "脚后跟", true));
passes.add(new Pass("梅西", "普通", true));
passes.add(new Pass("内马尔", "脚后跟", false));
passes.add(new Pass("苏亚雷斯","脚后跟", true));
passes.add(new Pass("梅西", "头球", false));
passes.add(new Pass("内马尔", "脚后跟", true));
passes.add(new Pass("苏亚雷斯","普通", true));
passes.add(new Pass("梅西", "脚后跟", true));
// 2. 统计脚后跟传球成功的次数
int heelPassSuccessCount = 0;
for (Pass pass : passes) {
if ("脚后跟".equals(pass.getPassType()) && pass.isSuccess()) {
heelPassSuccessCount++;
System.out.println("命中:" + pass);
}
}
// 3. 输出结果
System.out.println("==============================");
System.out.println("脚后跟传球成功次数:" + heelPassSuccessCount + " 次");
}
}
运行结果
命中:梅西 - 脚后跟 - 成功
命中:苏亚雷斯 - 脚后跟 - 成功
命中:内马尔 - 脚后跟 - 成功
命中:梅西 - 脚后跟 - 成功
==============================
脚后跟传球成功次数:4 次
代码扩展建议
用 Stream 流式写法(更简洁)
long count = passes.stream()
.filter(p -> "脚后跟".equals(p.getPassType()))
.filter(Pass::isSuccess)
.count();
System.out.println("脚后跟传球成功次数:" + count);
按球员分别统计
Map<String, Long> result = passes.stream()
.filter(p -> "脚后跟".equals(p.getPassType()) && p.isSuccess())
.collect(Collectors.groupingBy(Pass::getPlayerName, Collectors.counting()));
result.forEach((name, cnt) ->
System.out.println(name + " 脚后跟传球成功 " + cnt + " 次"));
加上成功率统计
long total = passes.stream().filter(p -> "脚后跟".equals(p.getPassType())).count();
long success = passes.stream().filter(p -> "脚后跟".equals(p.getPassType()) && p.isSuccess()).count();
double rate = total == 0 ? 0 : (double) success / total * 100;
System.out.printf("脚后跟传球成功率:%.1f%%%n", rate);
关键点小结
| 要点 | 说明 |
|---|---|
| 数据结构 | 用 Pass 类封装传球信息,List<Pass> 存全部记录 |
| 筛选条件 | 传球方式 == "脚后跟" 且 成功 == true |
| 计数方式 | 循环累加 或 Stream.filter().count() |
| 扩展方向 | 按球员分组、算成功率、按时间段筛选等 |
如果你有真实的数据源(CSV、JSON、数据库),我可以帮你改成从文件读取并进行更复杂的统计,需要的话告诉我数据格式即可。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播