本文目录导读:

这是一个很典型的足球赛事数据分析问题,你提到的“案例”可能指某种编程练习或数据分析场景,我来帮你梳理一下用Java判断上半场是否有进球的思路和代码实现。
核心逻辑
判断上半场是否有进球,本质上就是:上半场主队进球数 + 上半场客队进球数 > 0
Java 实现方案
简单判断(基于已有数据)
public class HalfTimeGoalChecker {
/**
* 判断上半场是否有进球
* @param homeGoalsHT 主队上半场进球数
* @param awayGoalsHT 客队上半场进球数
* @return true 表示上半场有进球
*/
public static boolean hasFirstHalfGoal(int homeGoalsHT, int awayGoalsHT) {
return (homeGoalsHT + awayGoalsHT) > 0;
}
public static void main(String[] args) {
// 案例1:上半场 1:0
System.out.println("案例1 (1:0): " + hasFirstHalfGoal(1, 0)); // true
// 案例2:上半场 0:0
System.out.println("案例2 (0:0): " + hasFirstHalfGoal(0, 0)); // false
// 案例3:上半场 0:2
System.out.println("案例3 (0:2): " + hasFirstHalfGoal(0, 2)); // true
}
}
面向对象(完整赛事模型)
import java.util.List;
import java.util.ArrayList;
class Goal {
int minute;
String team; // "HOME" or "AWAY"
Goal(int minute, String team) {
this.minute = minute;
this.team = team;
}
}
class Match {
List<Goal> goals = new ArrayList<>();
void addGoal(int minute, String team) {
goals.add(new Goal(minute, team));
}
/**
* 判断上半场(前45分钟,含补时可按需调整)是否有进球
*/
boolean hasFirstHalfGoal() {
return goals.stream()
.anyMatch(g -> g.minute <= 45);
}
/**
* 统计上半场进球数
*/
long countFirstHalfGoals() {
return goals.stream()
.filter(g -> g.minute <= 45)
.count();
}
}
public class MatchAnalysis {
public static void main(String[] args) {
Match match = new Match();
match.addGoal(23, "HOME");
match.addGoal(67, "AWAY");
System.out.println("上半场是否有进球: " + match.hasFirstHalfGoal()); // true
System.out.println("上半场进球数: " + match.countFirstHalfGoals()); // 1
}
}
从数据库/API数据判断
如果是实际项目,通常数据来自数据库:
// 假设从数据库查询得到
public boolean checkFirstHalfGoals(MatchStats stats) {
// 方式1:直接用半场统计数据
if (stats.getHomeGoalsHT() != null && stats.getAwayGoalsHT() != null) {
return stats.getHomeGoalsHT() + stats.getAwayGoalsHT() > 0;
}
// 方式2:遍历事件列表
return stats.getEvents().stream()
.filter(e -> "GOAL".equals(e.getType()))
.anyMatch(e -> e.getMinute() <= 45);
}
关键注意点
| 考虑因素 | 说明 |
|---|---|
| 补时 | 上半场补时(如45+2')通常仍算上半场,判断条件可用 minute <= 45 或单独标记半场 |
| 乌龙球 | 需明确计入哪方,但无论哪方都算“有进球” |
| 点球/ VAR 取消 | 以最终判定有效的进球为准 |
| 数据来源 | 优先用官方半场统计字段,而非自行计算,更可靠 |
判断上半场是否有进球的标准答案就是:上半场总进球数 > 0,用Java实现时,最简单一行 return homeHT + awayHT > 0; 即可;若基于事件流,则筛选 minute <= 45 的进球事件判断是否存在。
如果你有具体的“案例”数据(比如某场比赛的事件列表或字段结构),可以发给我,我帮你写针对性的判断代码。