Java 案例:统计射门次数哪队更多
下面是一个完整的 Java 示例,模拟统计两支球队的射门次数并判断哪队射门更多。

完整代码
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
public class ShotStatistics {
// 球队名称常量
private static final String TEAM_A = "红队";
private static final String TEAM_B = "蓝队";
public static void main(String[] args) {
// 模拟一场比赛:随机生成射门数据
Map<String, Integer> shotStats = simulateMatch();
// 输出统计结果
printStatistics(shotStats);
// 判断哪队射门更多
String winner = compareShots(shotStats);
System.out.println("\n>>> " + winner);
}
/**
* 模拟一场比赛,随机生成两队的射门次数
*/
private static Map<String, Integer> simulateMatch() {
Random random = new Random();
Map<String, Integer> stats = new HashMap<>();
// 红队射门 5~20 次,蓝队射门 5~20 次
int teamAShots = 5 + random.nextInt(16);
int teamBShots = 5 + random.nextInt(16);
stats.put(TEAM_A, teamAShots);
stats.put(TEAM_B, teamBShots);
return stats;
}
/**
* 打印射门统计
*/
private static void printStatistics(Map<String, Integer> stats) {
System.out.println("========== 射门统计 ==========");
for (Map.Entry<String, Integer> entry : stats.entrySet()) {
System.out.printf("%s 射门次数: %d 次%n", entry.getKey(), entry.getValue());
}
}
/**
* 比较两队射门次数,返回结论字符串
*/
private static String compareShots(Map<String, Integer> stats) {
int shotsA = stats.get(TEAM_A);
int shotsB = stats.get(TEAM_B);
if (shotsA > shotsB) {
return TEAM_A + " 射门更多(" + shotsA + " vs " + shotsB + ")";
} else if (shotsA < shotsB) {
return TEAM_B + " 射门更多(" + shotsB + " vs " + shotsA + ")";
} else {
return "两队射门次数相同(" + shotsA + " vs " + shotsB + ")";
}
}
}
运行结果示例
========== 射门统计 ==========
红队 射门次数: 14 次
蓝队 射门次数: 9 次
>>> 红队 射门更多(14 vs 9)
如果数据来自用户输入
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class ShotStatisticsInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> stats = new HashMap<>();
System.out.print("请输入红队射门次数: ");
stats.put("红队", scanner.nextInt());
System.out.print("请输入蓝队射门次数: ");
stats.put("蓝队", scanner.nextInt());
// 打印
System.out.println("\n========== 射门统计 ==========");
stats.forEach((team, shots) ->
System.out.println(team + " 射门次数: " + shots + " 次"));
// 比较
int red = stats.get("红队");
int blue = stats.get("蓝队");
System.out.println("\n>>> ");
if (red > blue) {
System.out.println("红队射门更多(" + red + " vs " + blue + ")");
} else if (red < blue) {
System.out.println("蓝队射门更多(" + blue + " vs " + red + ")");
} else {
System.out.println("两队射门次数相同(" + red + " vs " + blue + ")");
}
scanner.close();
}
}
关键知识点
| 知识点 | 说明 |
|---|---|
HashMap |
用键值对存储"球队 → 射门次数",方便扩展多支球队 |
Map.Entry 遍历 |
遍历所有球队的统计数据 |
Random |
模拟比赛生成随机数据 |
printf / %n |
格式化输出,%n 是跨平台换行符 |
if-else 分支 |
比较大小,输出不同结论 |
扩展建议
- 多队支持:把
HashMap改为接收 N 支球队,用Collections.max()找出射门最多的球队:String maxTeam = Collections.max(stats.entrySet(), Map.Entry.comparingByValue()).getKey();
- 持久化:将结果写入文件(
Files.writeString)。 - 面向对象:定义
Team类(队名、射门次数、进球数等),更贴近真实场景。 - 多场比赛:用
List<Match>累计整个赛季的射门数据求和比较。
如果你需要多队对比或从文件/数据库读取数据的版本,可以告诉我具体需求 😊