Java案例:统计假动作晃过防守次数
下面是一个完整的Java案例,模拟篮球/足球运动员使用假动作晃过防守球员,并统计成功次数的场景。

案例需求
- 模拟运动员进行多次假动作
- 每次假动作有成功(晃过防守)和失败(被识破)两种情况
- 统计算法统计成功晃过防守的总次数
- 输出详细记录和统计结果
完整代码实现
import java.util.Random;
import java.util.Scanner;
/**
* 统计假动作晃过防守次数
*/
public class FakeMoveCounter {
// 假动作类型
private static final String[] FAKE_MOVES = {
"变向过人", "假投篮", "假传真突", "胯下运球", "背后运球", "急停跳投假动作", "转身假动作"
};
// 统计结果
static class Stats {
int totalAttempts = 0; // 总尝试次数
int successCount = 0; // 成功晃过次数
int failCount = 0; // 失败次数
double getSuccessRate() {
return totalAttempts == 0 ? 0 : (successCount * 100.0 / totalAttempts);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
System.out.println("===== 假动作晃过防守统计系统 =====");
System.out.print("请输入要进行的假动作次数: ");
int rounds = scanner.nextInt();
Stats stats = new Stats();
System.out.println("\n----- 假动作执行记录 -----");
for (int i = 1; i <= rounds; i++) {
// 随机选择一个假动作
String move = FAKE_MOVES[random.nextInt(FAKE_MOVES.length)];
// 随机判定成功(70%成功率)
boolean success = random.nextDouble() < 0.7;
stats.totalAttempts++;
if (success) {
stats.successCount++;
System.out.printf("第 %2d 次 | %-12s | ✅ 成功晃过防守%n", i, move);
} else {
stats.failCount++;
System.out.printf("第 %2d 次 | %-12s | ❌ 被防守识破%n", i, move);
}
}
// 输出统计结果
System.out.println("\n===== 统计结果 =====");
System.out.println("总假动作次数 : " + stats.totalAttempts);
System.out.println("成功晃过次数 : " + stats.successCount);
System.out.println("被识破次数 : " + stats.failCount);
System.out.printf("成功率 : %.2f%%%n", stats.getSuccessRate());
// 评价
double rate = stats.getSuccessRate();
if (rate >= 80) {
System.out.println("评价:假动作大师!防守球员完全被你晃晕 🏆");
} else if (rate >= 60) {
System.out.println("评价:假动作娴熟,防守球员压力很大 👍");
} else if (rate >= 40) {
System.out.println("评价:假动作有待提高,注意节奏变化 💪");
} else {
System.out.println("评价:防守球员看穿你了,多练习基本功吧 😅");
}
scanner.close();
}
}
运行效果示例
===== 假动作晃过防守统计系统 =====
请输入要进行的假动作次数: 10
----- 假动作执行记录 -----
第 1 次 | 变向过人 | ✅ 成功晃过防守
第 2 次 | 假投篮 | ✅ 成功晃过防守
第 3 次 | 急停跳投假动作 | ❌ 被防守识破
第 4 次 | 背后运球 | ✅ 成功晃过防守
第 5 次 | 假传真突 | ✅ 成功晃过防守
第 6 次 | 转身假动作 | ❌ 被防守识破
第 7 次 | 变向过人 | ✅ 成功晃过防守
第 8 次 | 胯下运球 | ✅ 成功晃过防守
第 9 次 | 假投篮 | ✅ 成功晃过防守
第 10 次 | 背后运球 | ✅ 成功晃过防守
===== 统计结果 =====
总假动作次数 : 10
成功晃过次数 : 8
被识破次数 : 2
成功率 : 80.00%
评价:假动作大师!防守球员完全被你晃晕 🏆
核心知识点
| 知识点 | 说明 |
|---|---|
| 数组 | FAKE_MOVES 存储假动作类型 |
| Random | 随机选择动作、随机判定成功率 |
| 面向对象 | 用 Stats 内部类封装统计数据 |
| 循环 | for 循环执行多次假动作 |
| 条件判断 | 根据成功率给出评价 |
| 格式化输出 | printf 对齐输出 |
可扩展方向
- 多球员统计:用
Map<String, Stats>统计每个球员的晃人数据 - 防守类型:加入"贴身防守""区域联防"等场景,不同场景成功率不同
- 文件持久化:把记录写入
stats.txt,便于赛后复盘分析 - 图形化界面:用 Swing/JavaFX 做一个可视化统计面板
- 保存历史:用集合(
List)记录每次动作对象,方便后续查询
如果你想要 "多球员对比统计" 或 "从文件读取假动作记录统计" 的版本,告诉我,我可以继续扩展。