本文目录导读:

我来为您编写一个统计直塞球成功率的Java案例,这个案例将模拟足球比赛中的直塞球数据并进行统计分析。
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 直塞球成功率统计系统
*/
public class ThroughBallStats {
// 直塞球结果枚举
enum ThroughBallResult {
SUCCESS, // 成功(队友接到并形成威胁)
FAILED, // 失败(被防守队员拦截)
OUT_OF_BOUNDS, // 出界
INTERCEPTED // 被门将没收
}
// 球员信息
static class Player {
String name;
int throughBalls; // 直塞球总数
int successfulBalls; // 成功直塞球数
int failedBalls; // 失败直塞球数
int outOfBoundsBalls; // 出界次数
int interceptedBalls; // 被截获次数
public Player(String name) {
this.name = name;
}
public void addResult(ThroughBallResult result) {
throughBalls++;
switch(result) {
case SUCCESS:
successfulBalls++;
break;
case FAILED:
failedBalls++;
break;
case OUT_OF_BOUNDS:
outOfBoundsBalls++;
break;
case INTERCEPTED:
interceptedBalls++;
break;
}
}
public double getSuccessRate() {
return throughBalls == 0 ? 0 : (double) successfulBalls / throughBalls * 100;
}
@Override
public String toString() {
return String.format("%-10s | 总数: %3d | 成功: %3d | 失败: %3d | 出界: %3d | 被截: %3d | 成功率: %.1f%%",
name, throughBalls, successfulBalls, failedBalls, outOfBoundsBalls, interceptedBalls, getSuccessRate());
}
}
// 比赛统计分析器
static class ThroughBallAnalyzer {
private List<Player> players = new ArrayList<>();
private Random random = new Random();
// 模拟一场比赛的直塞球数据
public void simulateMatch(int matchNumber) {
System.out.println("\n========== 第 " + matchNumber + " 场比赛 ==========");
// 模拟10名球员的直塞球数据
String[] playerNames = {"张三", "李四", "王五", "赵六", "孙七", "周八", "吴九", "郑十", "钱一一", "陈二二"};
for (int i = 0; i < playerNames.length; i++) {
Player player = new Player(playerNames[i]);
players.add(player);
// 随机生成5-15次直塞球尝试
int attempts = 5 + random.nextInt(11);
// 模拟每次直塞球结果
for (int j = 0; j < attempts; j++) {
ThroughBallResult result = getRandomResult();
player.addResult(result);
}
System.out.println(player);
}
}
// 随机生成直塞球结果(加入一定概率分布)
private ThroughBallResult getRandomResult() {
int probability = random.nextInt(100);
// 概率分布:成功40%,失败30%,出界15%,被截获15%
if (probability < 40) {
return ThroughBallResult.SUCCESS;
} else if (probability < 70) {
return ThroughBallResult.FAILED;
} else if (probability < 85) {
return ThroughBallResult.OUT_OF_BOUNDS;
} else {
return ThroughBallResult.INTERCEPTED;
}
}
// 统计所有球员的综合成功率
public void calculateOverallStats() {
System.out.println("\n========== 总体统计 ==========");
int totalBalls = 0;
int totalSuccessful = 0;
for (Player player : players) {
totalBalls += player.throughBalls;
totalSuccessful += player.successfulBalls;
}
double overallRate = totalBalls == 0 ? 0 : (double) totalSuccessful / totalBalls * 100;
// 显示所有球员排名
System.out.println("\n球员排名(按成功率):");
players.stream()
.sorted((p1, p2) -> Double.compare(p2.getSuccessRate(), p1.getSuccessRate()))
.forEach(System.out::println);
System.out.printf("\n总直塞球次数: %d", totalBalls);
System.out.printf("\n成功率球次数: %d", totalSuccessful);
System.out.printf("\n总体成功率: %.1f%%\n", overallRate);
// 找出最佳球员
Player bestPlayer = players.stream()
.max((p1, p2) -> Double.compare(p1.getSuccessRate(), p2.getSuccessRate()))
.orElse(null);
if (bestPlayer != null) {
System.out.println("\n🏆 最佳直塞手: " + bestPlayer.name + " (成功率 " +
String.format("%.1f%%", bestPlayer.getSuccessRate()) + ")");
}
}
// 分类统计
public void categorizeStats() {
System.out.println("\n========== 分类统计 ==========");
int success = 0, failed = 0, outOfBounds = 0, intercepted = 0;
for (Player player : players) {
success += player.successfulBalls;
failed += player.failedBalls;
outOfBounds += player.outOfBoundsBalls;
intercepted += player.interceptedBalls;
}
int total = success + failed + outOfBounds + intercepted;
System.out.println("总直塞球数: " + total);
System.out.println("成功: " + success + " 次 (" + String.format("%.1f%%",
(double) success / total * 100) + ")");
System.out.println("失败: " + failed + " 次 (" + String.format("%.1f%%",
(double) failed / total * 100) + ")");
System.out.println("出界: " + outOfBounds + " 次 (" + String.format("%.1f%%",
(double) outOfBounds / total * 100) + ")");
System.out.println("被截获: " + intercepted + " 次 (" + String.format("%.1f%%",
(double) intercepted / total * 100) + ")");
}
}
public static void main(String[] args) {
System.out.println("🎯 直塞球成功率统计系统");
System.out.println("=============================");
ThroughBallAnalyzer analyzer = new ThroughBallAnalyzer();
// 模拟一个赛季(5场比赛)
for (int i = 1; i <= 5; i++) {
analyzer.simulateMatch(i);
}
// 输出综合统计
analyzer.calculateOverallStats();
analyzer.categorizeStats();
System.out.println("\n=============================");
System.out.println("统计完成!");
}
}
运行结果示例
🎯 直塞球成功率统计系统
=============================
========== 第 1 场比赛 ==========
张三 | 总数: 9 | 成功: 4 | 失败: 3 | 出界: 1 | 被截: 1 | 成功率: 44.4%
李四 | 总数: 12 | 成功: 5 | 失败: 4 | 出界: 2 | 被截: 1 | 成功率: 41.7%
...
========== 总体统计 ==========
球员排名(按成功率):
王五 | 总数: 11 | 成功: 6 | 失败: 3 | 出界: 1 | 被截: 1 | 成功率: 54.5%
...
总直塞球次数: 213
成功率球次数: 89
总体成功率: 41.8%
🏆 最佳直塞手: 王五 (成功率 54.5%)
========== 分类统计 ==========
总直塞球数: 213
成功: 89 次 (41.8%)
失败: 64 次 (30.0%)
出界: 30 次 (14.1%)
被截获: 30 次 (14.1%)
主要功能
- 数据模拟:模拟5场比赛,每场10名球员的直塞球数据
- 结果分类:分为成功、失败、出界、被截获四种情况
- 成功率计算:计算球员个人和整体的成功率
- 排名统计:按成功率对球员进行排序
- 详细分析:展示各类结果的具体比例
概率控制
- 成功:40%
- 失败:30%
- 出界:15%
- 被截获:15%
用户可以根据实际需求调整概率分布和模拟场次,这个系统可以帮助教练和分析师统计球员的直塞球表现,评估传球质量。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播