本文目录导读:

我理解您想要一个Java案例来统计定位球(比如任意球、角球、点球等)的得分占比,这里提供一个完整的示例:
完整Java案例
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SetPieceScoreAnalyzer {
// 定位球类型枚举
enum SetPieceType {
FREE_KICK("任意球"),
CORNER_KICK("角球"),
PENALTY("点球"),
THROW_IN("界外球"),
OTHER("其他");
private String chineseName;
SetPieceType(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
}
// 进球实体类
static class Goal {
private String playerName;
private SetPieceType type;
private int minute;
public Goal(String playerName, SetPieceType type, int minute) {
this.playerName = playerName;
this.type = type;
this.minute = minute;
}
public SetPieceType getType() {
return type;
}
public int getMinute() {
return minute;
}
@Override
public String toString() {
return String.format("[%d分钟] %s - %s进球",
minute, playerName, type.getChineseName());
}
}
// 统计数据类
static class StatsData {
private List<Goal> allGoals;
private Map<SetPieceType, Integer> setPieceGoals;
private int totalGoals;
public StatsData() {
this.allGoals = new ArrayList<>();
this.setPieceGoals = new HashMap<>();
this.totalGoals = 0;
}
// 添加进球
public void addGoal(Goal goal) {
allGoals.add(goal);
totalGoals++;
setPieceGoals.merge(goal.getType(), 1, Integer::sum);
}
// 计算定位球得分占比
public Map<SetPieceType, Double> calculateSetPiecePercentage() {
Map<SetPieceType, Double> percentages = new HashMap<>();
for (Map.Entry<SetPieceType, Integer> entry : setPieceGoals.entrySet()) {
percentages.put(entry.getKey(),
(double) entry.getValue() / totalGoals * 100);
}
return percentages;
}
// 生成统计报告
public void printReport() {
System.out.println("=========== 进球统计报告 ===========");
System.out.printf("总进球数: %d球%n", totalGoals);
System.out.println("-----------------------------------");
if (allGoals.isEmpty()) {
System.out.println("暂无进球数据");
return;
}
// 显示所有进球
System.out.println("详细进球记录:");
for (Goal goal : allGoals) {
System.out.println(" " + goal);
}
System.out.println("-----------------------------------");
System.out.println("定位球得分占比分析:");
Map<SetPieceType, Double> percentages = calculateSetPiecePercentage();
// 排序输出
percentages.entrySet().stream()
.sorted(Map.Entry.<SetPieceType, Double>comparingByValue().reversed())
.forEach(entry -> {
int goals = setPieceGoals.get(entry.getKey());
System.out.printf(" %s: %d球 (占比 %.2f%%)%n",
entry.getKey().getChineseName(),
goals,
entry.getValue());
});
// 计算定位球总占比
double totalSetPiecePercentage = percentages.values().stream()
.mapToDouble(Double::doubleValue)
.sum();
System.out.printf("%n定位球总得分占比: %.2f%%%n", totalSetPiecePercentage);
}
}
public static void main(String[] args) {
// 创建统计数据对象
StatsData stats = new StatsData();
// 模拟一场比赛的数据(这里以某支球队为例)
// 假设这支球队进了10个球
stats.addGoal(new Goal("张三", SetPieceType.PENALTY, 12));
stats.addGoal(new Goal("李四", SetPieceType.FREE_KICK, 25));
stats.addGoal(new Goal("王五", SetPieceType.CORNER_KICK, 34));
stats.addGoal(new Goal("赵六", SetPieceType.OTHER, 41)); // 运动战进球
stats.addGoal(new Goal("孙七", SetPieceType.PENALTY, 56));
stats.addGoal(new Goal("周八", SetPieceType.CORNER_KICK, 63));
stats.addGoal(new Goal("吴九", SetPieceType.OTHER, 72)); // 反击进球
stats.addGoal(new Goal("郑十", SetPieceType.FREE_KICK, 78));
stats.addGoal(new Goal("钱十一", SetPieceType.THROW_IN, 85));
stats.addGoal(new Goal("孙十二", SetPieceType.OTHER, 90)); // 补时进球
// 输出统计报告
stats.printReport();
// 额外功能:分析特定时间段
System.out.println("\n=========== 时间段分析 ===========");
analyzeTimePeriods(stats.allGoals);
}
// 分析不同时间段的进球分布
private static void analyzeTimePeriods(List<Goal> goals) {
Map<String, Integer> timeStats = new HashMap<>();
for (Goal goal : goals) {
String period = getTimePeriod(goal.getMinute());
timeStats.merge(period, 1, Integer::sum);
}
timeStats.forEach((period, count) ->
System.out.printf("%s: %d球%n", period, count));
}
private static String getTimePeriod(int minute) {
if (minute <= 15) return "1-15分钟(开场)";
else if (minute <= 30) return "16-30分钟";
else if (minute <= 45) return "31-45分钟(上半场结束)";
else if (minute <= 60) return "46-60分钟";
else if (minute <= 75) return "61-75分钟";
else if (minute <= 90) return "76-90分钟(比赛结束)";
else return "补时阶段";
}
}
运行结果示例
=========== 进球统计报告 ===========
总进球数: 10球
-----------------------------------
详细进球记录:
[12分钟] 张三 - 点球进球
[25分钟] 李四 - 任意球进球
[34分钟] 王五 - 角球进球
[41分钟] 赵六 - 其他进球
[56分钟] 孙七 - 点球进球
[63分钟] 周八 - 角球进球
[72分钟] 吴九 - 其他进球
[78分钟] 郑十 - 任意球进球
[85分钟] 钱十一 - 界外球进球
[90分钟] 孙十二 - 其他进球
-----------------------------------
定位球得分占比分析:
任意球: 2球 (占比 20.00%)
角球: 2球 (占比 20.00%)
点球: 2球 (占比 20.00%)
界外球: 1球 (占比 10.00%)
定位球总得分占比: 70.00%
=========== 时间段分析 ===========
1-15分钟(开场): 1球
16-30分钟: 1球
31-45分钟(上半场结束): 1球
46-60分钟: 1球
61-75分钟: 1球
76-90分钟(比赛结束): 5球
功能说明
- 定位球类型分类:任意球、角球、点球、界外球
- 统计功能:
- 总进球数统计
- 各定位球类型进球数
- 各类型得分占比
- 定位球总得分占比
- 附加分析:
- 按时间段分析进球分布
- 详细进球记录展示
使用建议
- 可以修改
main方法中的模拟数据来测试不同场景 - 可以扩展支持更多定位球类型(如中场开球等)
- 可以添加团队对比功能
- 可以结合数据库或文件存储保存历史数据
这个案例可以用于足球数据分析、比赛复盘或教学示例等场景。
版权声明: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直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播