java案例统计假动作晃过防守几次?

wen java案例 2

Java案例:统计假动作晃过防守次数

下面是一个完整的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 对齐输出

可扩展方向

  1. 多球员统计:用 Map<String, Stats> 统计每个球员的晃人数据
  2. 防守类型:加入"贴身防守""区域联防"等场景,不同场景成功率不同
  3. 文件持久化:把记录写入 stats.txt,便于赛后复盘分析
  4. 图形化界面:用 Swing/JavaFX 做一个可视化统计面板
  5. 保存历史:用集合(List)记录每次动作对象,方便后续查询

如果你想要 "多球员对比统计" 或 "从文件读取假动作记录统计" 的版本,告诉我,我可以继续扩展。

抱歉,评论功能暂时关闭!