Java 案例:统计角球数哪边领先
下面给出一个完整的 Java 示例,用于统计足球比赛中主队 vs 客队的角球数,并判断哪边领先。

设计思路
- 使用一个
CornerStats类,记录主队和客队的角球数 - 提供
addHomeCorner()、addAwayCorner()方法累加角球 - 提供
getLeader()判断哪边领先(主队领先 / 客队领先 / 平局) - 主程序模拟比赛过程中不断发生角球,实时打印领先情况
完整代码
/**
* 角球统计类
*/
class CornerStats {
private int homeCorners = 0; // 主队角球数
private int awayCorners = 0; // 客队角球数
// 主队获得一个角球
public void addHomeCorner() {
homeCorners++;
}
// 客队获得一个角球
public void addAwayCorner() {
awayCorners++;
}
// 判断哪边领先
public String getLeader() {
if (homeCorners > awayCorners) {
return "主队领先";
} else if (awayCorners > homeCorners) {
return "客队领先";
} else {
return "平局";
}
}
// 打印当前统计结果
public void printStats() {
System.out.printf("主队角球: %d | 客队角球: %d | 结果: %s%n",
homeCorners, awayCorners, getLeader());
}
}
/**
* 主程序:模拟比赛过程中角球的发生
*/
public class CornerCounterDemo {
public static void main(String[] args) {
CornerStats stats = new CornerStats();
System.out.println("===== 比赛开始 =====");
// 模拟比赛事件序列:H 表示主队角球,A 表示客队角球
String events = "H A A H H H A A H A H H";
String[] eventArr = events.split(" ");
int minute = 10;
for (String event : eventArr) {
if ("H".equals(event)) {
stats.addHomeCorner();
System.out.printf("[第 %d 分钟] 主队获得角球%n", minute);
} else if ("A".equals(event)) {
stats.addAwayCorner();
System.out.printf("[第 %d 分钟] 客队获得角球%n", minute);
}
stats.printStats();
minute += 7; // 每次事件间隔 7 分钟
}
System.out.println("===== 比赛结束 =====");
System.out.println("最终结果: " + stats.getLeader());
}
}
运行结果示例
===== 比赛开始 =====
[第 10 分钟] 主队获得角球
主队角球: 1 | 客队角球: 0 | 结果: 主队领先
[第 17 分钟] 客队获得角球
主队角球: 1 | 客队角球: 1 | 结果: 平局
[第 24 分钟] 客队获得角球
主队角球: 1 | 客队角球: 2 | 结果: 客队领先
...
===== 比赛结束 =====
最终结果: 主队领先
关键点说明
| 需求 | 实现方式 |
|---|---|
| 统计角球数 | 用两个 int 计数器分别记录主队 / 客队 |
| 判断领先 | 比较两个计数器大小返回对应文案 |
| 实时更新 | 每添加一个角球后调用 printStats() 打印当前状态 |
| 结果三态 | 主队领先 / 客队领先 / 平局,避免漏判 |
可扩展方向
- 换成
enum表示结果:HOME_LEADING / AWAY_LEADING / TIE,更规范 - 支持多支球队:用
Map<String, Integer>存球队名 → 角球数 - 读取真实数据:从 CSV / 数据库 / API 读取角球事件流
- 返回领先幅度:增加
getMargin()返回差值,便于前端展示
如果你需要多球队版本或从文件读取数据的版本,告诉我,我可以再给出对应代码。
版权声明:本站文章为原创整理,转载请注明出处。