本文目录导读:

我为您创建一个统计足球比赛中两队射门次数的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("🤝 双方射门次数相同!");
}
}
}
这个程序提供了两种方式:
- 手动版本:适合教学演示,用户可以控制每次射门
- 自动版本:自动模拟90分钟比赛,更接近真实场景
两个版本都清晰地展示了如何使用Java进行数据统计和比较,并给出了明确的结论。