java案例统计射门次数哪队更多?

wen java案例 1

本文目录导读:

java案例统计射门次数哪队更多?

  1. 运行示例
  2. 增强版本(添加自动模拟功能)

我为您创建一个统计足球比赛中两队射门次数的Java案例,这个程序会模拟一场足球比赛的射门数据,并统计哪支球队射门更多。

import java.util.Random;
import java.util.Scanner;
public class ShotStatistics {
    // 球队类
    static class Team {
        private String name;
        private int shots;
        public Team(String name) {
            this.name = name;
            this.shots = 0;
        }
        public void addShot() {
            shots++;
        }
        public String getName() {
            return name;
        }
        public int getShots() {
            return shots;
        }
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();
        System.out.println("=== 足球射门统计系统 ===");
        System.out.println();
        // 创建两支球队
        Team homeTeam = new Team("主队");
        Team awayTeam = new Team("客队");
        // 获取球队名称(可选)
        System.out.print("请输入主队名称:");
        String homeName = scanner.nextLine();
        homeTeam = new Team(homeName.isEmpty() ? "主队" : homeName);
        System.out.print("请输入客队名称:");
        String awayName = scanner.nextLine();
        awayTeam = new Team(awayName.isEmpty() ? "客队" : awayName);
        System.out.println();
        System.out.println("比赛开始!");
        System.out.println();
        // 模拟比赛射门
        simulateMatch(homeTeam, awayTeam, random, scanner);
        // 显示统计结果
        displayStatistics(homeTeam, awayTeam);
        scanner.close();
    }
    // 模拟比赛射门
    private static void simulateMatch(Team home, Team away, Random random, Scanner scanner) {
        boolean continueMatch = true;
        while (continueMatch) {
            System.out.println("--- 当前比分 ---");
            System.out.printf("%s: %d 次射门 | %s: %d 次射门%n", 
                home.getName(), home.getShots(), away.getName(), away.getShots());
            System.out.println();
            System.out.println("选择操作:");
            System.out.println("1. 主队射门");
            System.out.println("2. 客队射门");
            System.out.println("3. 结束比赛并查看统计");
            System.out.print("请输入选择 (1-3): ");
            int choice = scanner.nextInt();
            scanner.nextLine(); // 消耗换行符
            switch (choice) {
                case 1:
                    home.addShot();
                    System.out.printf("%s 射门!%n", home.getName());
                    break;
                case 2:
                    away.addShot();
                    System.out.printf("%s 射门!%n", away.getName());
                    break;
                case 3:
                    continueMatch = false;
                    break;
                default:
                    System.out.println("无效选择,请重新输入!");
            }
            System.out.println();
        }
    }
    // 显示统计结果
    private static void displayStatistics(Team home, Team away) {
        System.out.println();
        System.out.println("=== 比赛统计结果 ===");
        System.out.println("━━━━━━━━━━━━━━━━━━━━━━");
        System.out.printf("%-10s %10s%n", "球队", "射门次数");
        System.out.println("---------------------");
        System.out.printf("%-12s %8d%n", home.getName(), home.getShots());
        System.out.printf("%-12s %8d%n", away.getName(), away.getShots());
        System.out.println("━━━━━━━━━━━━━━━━━━━━━━");
        // 判断哪队射门更多
        System.out.println();
        if (home.getShots() > away.getShots()) {
            System.out.printf("🏆 %s 射门次数更多!%n", home.getName());
            System.out.printf("%s 获得 %d 次射门,%s 获得 %d 次射门。%n",
                home.getName(), home.getShots(), away.getName(), away.getShots());
        } else if (away.getShots() > home.getShots()) {
            System.out.printf("🏆 %s 射门次数更多!%n", away.getName());
            System.out.printf("%s 获得 %d 次射门,%s 获得 %d 次射门。%n",
                away.getName(), away.getShots(), home.getName(), home.getShots());
        } else {
            System.out.println("🤝 双方射门次数相同!");
            System.out.printf("两队的射门次数都是 %d 次。%n", home.getShots());
        }
        // 计算总射门次数
        int totalShots = home.getShots() + away.getShots();
        System.out.println();
        System.out.printf("比赛总射门次数:%d 次%n", totalShots);
        if (totalShots == 0) {
            System.out.println("⚠️  这场比赛没有射门记录!");
        } else if (totalShots < 10) {
            System.out.println("📊 这是一场比较沉闷的比赛。");
        } else if (totalShots < 20) {
            System.out.println("📊 比赛相当激烈!");
        } else {
            System.out.println("📊 这是一场高强度的比赛!");
        }
    }
}

运行示例

=== 足球射门统计系统 ===
请输入主队名称:曼联
请输入客队名称:利物浦
比赛开始!
--- 当前比分 ---
曼联: 0 次射门 | 利物浦: 0 次射门
选择操作:
1. 主队射门
2. 客队射门
3. 结束比赛并查看统计
请输入选择 (1-3): 1
曼联 射门!
--- 当前比分 ---
曼联: 1 次射门 | 利物浦: 0 次射门
选择操作:
1. 主队射门
2. 客队射门
3. 结束比赛并查看统计
请输入选择 (1-3): 2
利物浦 射门!
...(继续模拟)...
=== 比赛统计结果 ===
━━━━━━━━━━━━━━━━━━━━━━
球队          射门次数
---------------------
曼联                8
利物浦             15
━━━━━━━━━━━━━━━━━━━━━━
🏆 利物浦 射门次数更多!
利物浦 获得 15 次射门,曼联 获得 8 次射门。
比赛总射门次数:23 次
📊 这是一场高强度的比赛!

增强版本(添加自动模拟功能)

如果您想要一个自动模拟的版本,可以使用这个增强版:

import java.util.Random;
import java.util.HashMap;
import java.util.Map;
public class AutoShotStatistics {
    public static void main(String[] args) {
        Random random = new Random();
        System.out.println("=== 自动模拟足球射门统计 ===");
        // 使用Map存储球队数据
        Map<String, Integer> shotsMap = new HashMap<>();
        String homeTeam = "皇马";
        String awayTeam = "巴萨";
        shotsMap.put(homeTeam, 0);
        shotsMap.put(awayTeam, 0);
        // 模拟90分钟比赛,每分钟随机射门0-2次
        for (int minute = 1; minute <= 90; minute++) {
            int homeShots = random.nextInt(2); // 0-1次
            int awayShots = random.nextInt(2);
            shotsMap.put(homeTeam, shotsMap.get(homeTeam) + homeShots);
            shotsMap.put(awayTeam, shotsMap.get(awayTeam) + awayShots);
            if (homeShots + awayShots > 0) {
                System.out.printf("第%2d分钟: %s射门%d次, %s射门%d次%n", 
                    minute, homeTeam, homeShots, awayTeam, awayShots);
            }
        }
        // 显示最终统计
        System.out.println();
        System.out.println("=== 最终统计结果 ===");
        System.out.printf("%s: %d 次射门%n", homeTeam, shotsMap.get(homeTeam));
        System.out.printf("%s: %d 次射门%n", awayTeam, shotsMap.get(awayTeam));
        // 判断胜负
        if (shotsMap.get(homeTeam) > shotsMap.get(awayTeam)) {
            System.out.printf("🏆 %s 射门次数更多!%n", homeTeam);
        } else if (shotsMap.get(awayTeam) > shotsMap.get(homeTeam)) {
            System.out.printf("🏆 %s 射门次数更多!%n", awayTeam);
        } else {
            System.out.println("🤝 双方射门次数相同!");
        }
    }
}

这个程序提供了两种方式:

  1. 手动版本:适合教学演示,用户可以控制每次射门
  2. 自动版本:自动模拟90分钟比赛,更接近真实场景

两个版本都清晰地展示了如何使用Java进行数据统计和比较,并给出了明确的结论。

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