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

需求分析
- 有 A、B 两支球队
- 每支球队有多名球员
- 统计每名球员的射门次数
- 汇总两队射门总数,比较哪队更多
完整代码
import java.util.*;
// 球员类
class Player {
private String name;
private int shots; // 射门次数
public Player(String name, int shots) {
this.name = name;
this.shots = shots;
}
public String getName() { return name; }
public int getShots() { return shots; }
}
// 球队类
class Team {
private String teamName;
private List<Player> players = new ArrayList<>();
public Team(String teamName) {
this.teamName = teamName;
}
public void addPlayer(Player p) {
players.add(p);
}
// 统计该队总射门次数
public int getTotalShots() {
int total = 0;
for (Player p : players) {
total += p.getShots();
}
return total;
}
// 打印球员详情
public void printDetails() {
System.out.println("【" + teamName + "】球员射门情况:");
for (Player p : players) {
System.out.printf(" %-8s 射门 %d 次%n", p.getName(), p.getShots());
}
System.out.println(" 合计:" + getTotalShots() + " 次\n");
}
public String getTeamName() { return teamName; }
}
// 主程序
public class ShotStatistics {
public static void main(String[] args) {
// 1. 创建两支球队
Team teamA = new Team("红队");
Team teamB = new Team("蓝队");
// 2. 添加球员及射门次数
teamA.addPlayer(new Player("张伟", 5));
teamA.addPlayer(new Player("李强", 3));
teamA.addPlayer(new Player("王磊", 4));
teamB.addPlayer(new Player("赵鹏", 6));
teamB.addPlayer(new Player("刘洋", 2));
teamB.addPlayer(new Player("陈晨", 3));
// 3. 打印详情
teamA.printDetails();
teamB.printDetails();
// 4. 比较结果
int shotsA = teamA.getTotalShots();
int shotsB = teamB.getTotalShots();
System.out.println("========== 比赛统计结果 ==========");
System.out.println(teamA.getTeamName() + " 总射门:" + shotsA + " 次");
System.out.println(teamB.getTeamName() + " 总射门:" + shotsB + " 次");
if (shotsA > shotsB) {
System.out.println("👉 " + teamA.getTeamName() + " 射门次数更多!");
} else if (shotsB > shotsA) {
System.out.println("👉 " + teamB.getTeamName() + " 射门次数更多!");
} else {
System.out.println("👉 两队射门次数相同!");
}
}
}
运行结果
【红队】球员射门情况:
张伟 射门 5 次
李强 射门 3 次
王磊 射门 4 次
合计:12 次
【蓝队】球员射门情况:
赵鹏 射门 6 次
刘洋 射门 2 次
陈晨 射门 3 次
合计:11 次
========== 比赛统计结果 ==========
红队 总射门:12 次
蓝队 总射门:11 次
👉 红队 射门次数更多!
代码说明
| 类 | 作用 |
|---|---|
Player |
封装球员姓名和射门次数 |
Team |
管理球员列表,提供汇总射门数的方法 |
ShotStatistics |
主程序,构建数据并比较结果 |
进阶扩展建议
-
使用 Stream API 简化求和:
public int getTotalShots() { return players.stream().mapToInt(Player::getShots).sum(); } -
使用 Map 存储数据(无需创建类):
Map<String, Integer> teamA = new HashMap<>(); teamA.put("张伟", 5); // ... sum 汇总 -
从文件/数据库读取数据,支持真实比赛数据。
-
加入命中率统计:再加一列"射正次数",算
进球/射门命中率。 -
多场比赛累计:用
List<Match>记录每场比赛,汇总整个赛季的统计。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播