本文目录导读:

我来为您设计一个Java案例,用于统计篮球比赛中关门防守(Trap Defense/Double Team)的成功次数。
完整的关门防守统计系统
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
// 防守事件类
class DefenseEvent {
private LocalDateTime timestamp;
private String playerName;
private String opponentName;
private DefenseType type;
private boolean success;
private String description;
public enum DefenseType {
TRAP_DEFENSE("关门防守"),
STEAL("抢断"),
TURNOVER_FORCED("造成失误"),
SHOT_BLOCKED("盖帽"),
BAD_PASS_FORCED("迫使传球失误");
private String displayName;
DefenseType(String displayName) {
this.displayName = displayName;
}
public String getDisplayName() {
return displayName;
}
}
public DefenseEvent(String playerName, String opponentName,
DefenseType type, boolean success, String description) {
this.timestamp = LocalDateTime.now();
this.playerName = playerName;
this.opponentName = opponentName;
this.type = type;
this.success = success;
this.description = description;
}
// Getters
public LocalDateTime getTimestamp() { return timestamp; }
public String getPlayerName() { return playerName; }
public String getOpponentName() { return opponentName; }
public DefenseType getType() { return type; }
public boolean isSuccess() { return success; }
public String getDescription() { return description; }
@Override
public String toString() {
return String.format("[%s] %s vs %s - %s: %s (成功: %s)",
timestamp.toString().substring(11, 19),
playerName, opponentName,
type.getDisplayName(),
description,
success ? "是" : "否");
}
}
// 比赛类
class BasketballGame {
private String homeTeam;
private String awayTeam;
private int homeScore;
private int awayScore;
private List<DefenseEvent> defenseEvents;
public BasketballGame(String homeTeam, String awayTeam) {
this.homeTeam = homeTeam;
this.awayTeam = awayTeam;
this.homeScore = 0;
this.awayScore = 0;
this.defenseEvents = new ArrayList<>();
}
public void addDefenseEvent(DefenseEvent event) {
defenseEvents.add(event);
}
public List<DefenseEvent> getDefenseEvents() {
return defenseEvents;
}
// 统计关门防守成功次数
public int countTrapDefenseSuccess() {
return (int) defenseEvents.stream()
.filter(e -> e.getType() == DefenseEvent.DefenseType.TRAP_DEFENSE && e.isSuccess())
.count();
}
// 统计关门防守总次数
public int countTotalTrapDefense() {
return (int) defenseEvents.stream()
.filter(e -> e.getType() == DefenseEvent.DefenseType.TRAP_DEFENSE)
.count();
}
// 获取成功率
public double getTrapDefenseSuccessRate() {
int total = countTotalTrapDefense();
if (total == 0) return 0;
return (double) countTrapDefenseSuccess() / total * 100;
}
}
// 防守统计分析器
class DefenseAnalyzer {
public static void printTrapDefenseReport(BasketballGame game) {
System.out.println("\n========== 关门防守统计报告 ==========");
System.out.println("总防守事件数: " + game.getDefenseEvents().size());
int trapTotal = game.countTotalTrapDefense();
int trapSuccess = game.countTrapDefenseSuccess();
System.out.println("关门防守总次数: " + trapTotal);
System.out.println("关门防守成功次数: " + trapSuccess);
System.out.printf("关门防守成功率: %.2f%%\n", game.getTrapDefenseSuccessRate());
if (trapTotal > 0) {
System.out.println("\n详细关门防守事件:");
for (DefenseEvent e : game.getDefenseEvents()) {
if (e.getType() == DefenseEvent.DefenseType.TRAP_DEFENSE) {
System.out.println(" " + e.toString());
}
}
}
}
// 模拟产生防守数据
public static BasketballGame simulateGame() {
BasketballGame game = new BasketballGame("湖人队", "勇士队");
Random random = new Random();
String[] players = {"詹姆斯", "戴维斯", "威少", "里夫斯", "范德比尔特"};
String[] opponents = {"库里", "汤普森", "追梦格林", "维金斯", "普尔"};
// 模拟40个防守回合
for (int i = 0; i < 40; i++) {
String defPlayer = players[random.nextInt(players.length)];
String offPlayer = opponents[random.nextInt(opponents.length)];
// 30%的概率是关门防守
if (random.nextDouble() < 0.3) {
boolean success = random.nextBoolean();
String description;
if (success) {
int type = random.nextInt(3);
switch (type) {
case 0:
description = "成功夹击造成进攻犯规";
break;
case 1:
description = "成功抢断";
break;
default:
description = "迫使对手传球失误";
}
} else {
description = "关门失败,对手突破得分";
}
game.addDefenseEvent(new DefenseEvent(
defPlayer, offPlayer,
DefenseEvent.DefenseType.TRAP_DEFENSE,
success, description
));
} else {
// 其他防守事件
DefenseEvent.DefenseType type = DefenseEvent.DefenseType.values()[
random.nextInt(DefenseEvent.DefenseType.values().length)
];
boolean success = random.nextBoolean();
String desc = success ? "成功" : "失败";
game.addDefenseEvent(new DefenseEvent(
defPlayer, offPlayer, type, success, desc
));
}
}
return game;
}
}
// 主程序
public class TrapDefenseStatistics {
public static void main(String[] args) {
System.out.println("=== 关门防守成功次数统计系统 ===");
System.out.println("启动模拟NBA比赛防守数据分析...");
// 模拟一场比赛
BasketballGame game = DefenseAnalyzer.simulateGame();
// 打印报告
DefenseAnalyzer.printTrapDefenseReport(game);
// 演示具体案例
System.out.println("\n========== 具体案例分析 ==========");
demonstrateRealCase();
}
private static void demonstrateRealCase() {
BasketballGame game = new BasketballGame("热火队", "凯尔特人队");
// 添加真实场景的关门防守案例
game.addDefenseEvent(new DefenseEvent(
"巴特勒", "塔图姆",
DefenseEvent.DefenseType.TRAP_DEFENSE,
true,
"第三节末段成功包夹,造成进攻时间违例"
));
game.addDefenseEvent(new DefenseEvent(
"阿德巴约", "布朗",
DefenseEvent.DefenseType.TRAP_DEFENSE,
true,
"底线成功夹击,逼迫传球被断"
));
game.addDefenseEvent(new DefenseEvent(
"洛瑞", "霍福德",
DefenseEvent.DefenseType.TRAP_DEFENSE,
false,
"防守人上抢过猛,被突破上篮"
));
game.addDefenseEvent(new DefenseEvent(
"希罗", "怀特",
DefenseEvent.DefenseType.TRAP_DEFENSE,
true,
"弧顶包夹成功,迫使8秒违例"
));
DefenseAnalyzer.printTrapDefenseReport(game);
System.out.println("\n分析结论:");
System.out.println("本场关门防守成功 " + game.countTrapDefenseSuccess() + " 次");
System.out.println("成功率达 " + String.format("%.1f%%", game.getTrapDefenseSuccessRate()));
System.out.println("建议: 在关键比分阶段多使用关门防守战术");
}
}
运行结果示例
=== 关门防守成功次数统计系统 ===
启动模拟NBA比赛防守数据分析...
========== 关门防守统计报告 ==========
总防守事件数: 40
关门防守总次数: 12
关门防守成功次数: 8
关门防守成功率: 66.67%
详细关门防守事件:
[10:23:45] 詹姆斯 vs 库里 - 关门防守: 成功夹击造成进攻犯规 (成功: 是)
[10:24:12] 戴维斯 vs 汤普森 - 关门防守: 关门失败,对手突破得分 (成功: 否)
...
========== 具体案例分析 ==========
========== 关门防守统计报告 ==========
总防守事件数: 4
关门防守总次数: 4
关门防守成功次数: 3
关门防守成功率: 75.00%
详细关门防守事件:
[10:25:00] 巴特勒 vs 塔图姆 - 关门防守: 第三节末段成功包夹,造成进攻时间违例 (成功: 是)
[10:25:00] 阿德巴约 vs 布朗 - 关门防守: 底线成功夹击,逼迫传球被断 (成功: 是)
[10:25:00] 洛瑞 vs 霍福德 - 关门防守: 防守人上抢过猛,被突破上篮 (成功: 否)
[10:25:00] 希罗 vs 怀特 - 关门防守: 弧顶包夹成功,迫使8秒违例 (成功: 是)
分析结论:
本场关门防守成功 3 次
成功率达 75.0%
建议: 在关键比分阶段多使用关门防守战术
功能特点
- 事件记录: 记录每个防守动作的详细信息
- 成功判定: 清晰标记每次关门防守是否成功
- 统计分析: 自动计算成功次数和成功率
- 分类统计: 可以按球员、时间等维度统计
- 可视化报告: 输出清晰的统计报告
可扩展功能
您可以根据需要添加:
- 按球员统计成功率
- 按节次统计防守效果
- 输出到数据库或Excel
- 实时更新统计
- 战术效果分析
- 与进攻数据对比
这个系统可以用于职业球队数据分析、训练效果评估等场景。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播