本文目录导读:

在Java中查看两队拦截抢断数据,通常有两种场景:从数据库/文件中读取数据 或 通过Java后端API接收数据,下面我给出几个典型的案例场景和实现方式。
从数据库读取(最常用)
假设有一个篮球比赛数据库,包含 team_stats 表。
数据表结构(MySQL示例)
CREATE TABLE team_stats (
match_id INT,
team_name VARCHAR(50),
steals INT, -- 抢断
blocks INT, -- 盖帽/拦截
interceptions INT -- 拦截(如果单独统计)
);
Java代码实现
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class TeamStatsService {
// 数据库连接信息
private static final String URL = "jdbc:mysql://localhost:3306/basketball_db";
private static final String USER = "root";
private static final String PASSWORD = "password";
// 定义队伍统计实体类
public static class TeamStats {
private String teamName;
private int steals;
private int blocks;
private int interceptions;
// 构造方法、getter/setter
public TeamStats(String teamName, int steals, int blocks, int interceptions) {
this.teamName = teamName;
this.steals = steals;
this.blocks = blocks;
this.interceptions = interceptions;
}
@Override
public String toString() {
return String.format("球队: %s | 抢断: %d | 拦截: %d | 盖帽: %d",
teamName, steals, interceptions, blocks);
}
}
// 查询两队的拦截抢断数据
public static List<TeamStats> getTwoTeamsStats(int matchId) {
List<TeamStats> statsList = new ArrayList<>();
String sql = "SELECT team_name, steals, blocks, interceptions " +
"FROM team_stats WHERE match_id = ? LIMIT 2";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, matchId);
ResultSet rs = pstmt.executeQuery();
// 遍历结果集
while (rs.next()) {
TeamStats stats = new TeamStats(
rs.getString("team_name"),
rs.getInt("steals"),
rs.getInt("blocks"),
rs.getInt("interceptions")
);
statsList.add(stats);
}
} catch (SQLException e) {
e.printStackTrace();
}
return statsList;
}
// 主方法测试
public static void main(String[] args) {
// 假设查询比赛ID为1001的数据
List<TeamStats> teams = getTwoTeamsStats(1001);
System.out.println("=== 比赛1001 两队拦截抢断数据 ===");
teams.forEach(System.out::println);
}
}
通过JSON文件读取
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.Map;
public class JsonStatsReader {
public static void main(String[] args) {
try {
// 读取JSON文件
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> data = mapper.readValue(
new File("match_data.json"),
Map.class
);
// 获取两队数据
Map<String, Object> homeTeam = (Map<String, Object>) data.get("home_team");
Map<String, Object> awayTeam = (Map<String, Object>) data.get("away_team");
// 打印拦截抢断数据
System.out.println("主队 - " + homeTeam.get("name") + ":");
System.out.println(" 拦截: " + homeTeam.get("interceptions"));
System.out.println(" 抢断: " + homeTeam.get("steals"));
System.out.println("\n客队 - " + awayTeam.get("name") + ":");
System.out.println(" 拦截: " + awayTeam.get("interceptions"));
System.out.println(" 抢断: " + awayTeam.get("steals"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
match_data.json 文件内容:
{
"home_team": {
"name": "湖人队",
"steals": 12,
"interceptions": 8,
"blocks": 5
},
"away_team": {
"name": "勇士队",
"steals": 9,
"interceptions": 10,
"blocks": 3
}
}
从API接口获取(Web应用)
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
@RestController
@RequestMapping("/api/stats")
public class StatsApiController {
// 获取两队统计数据
@GetMapping("/compare/{matchId}")
public Map<String, Object> compareTeams(@PathVariable("matchId") int matchId) {
// 从外部API获取数据
RestTemplate restTemplate = new RestTemplate();
String url = "https://api.basketball.com/matches/" + matchId + "/stats";
// 调用外部API获取数据
Map<String, Object> response = restTemplate.getForObject(url, Map.class);
// 提取需要的字段
Map<String, Object> result = new HashMap<>();
result.put("match_id", matchId);
result.put("comparison", response);
return result;
}
// 客户端调用示例
@GetMapping("/client-example")
public void clientExample() {
RestTemplate restTemplate = new RestTemplate();
String url = "http://localhost:8080/api/stats/compare/1001";
Map<String, Object> response = restTemplate.getForObject(url, Map.class);
System.out.println("两支球队的拦截抢断对比数据:");
System.out.println(response);
}
}
补充:数据格式化输出
public class StatsPrinter {
public static void printComparisonTable(List<TeamStats> teams) {
System.out.println("┌─────────────────────────────────────────────┐");
System.out.println("│ 两队拦截抢断数据对比 │");
System.out.println("├────────────┬──────┬────────┬───────────────┤");
System.out.println("│ 球队名称 │ 抢断 │ 拦截 │ 盖帽 │");
System.out.println("├────────────┼──────┼────────┼───────────────┤");
for (TeamStats team : teams) {
System.out.printf("│ %-10s │ %4d │ %4d │ %4d │%n",
team.getTeamName(),
team.getSteals(),
team.getInterceptions(),
team.getBlocks());
}
System.out.println("├────────────┼──────┼────────┼───────────────┤");
// 计算总计
int totalSteals = teams.stream().mapToInt(TeamStats::getSteals).sum();
int totalInterceptions = teams.stream().mapToInt(TeamStats::getInterceptions).sum();
System.out.printf("│ 总计 │ %4d │ %4d │ │%n",
totalSteals, totalInterceptions);
System.out.println("└────────────┴──────┴────────┴───────────────┘");
}
}
- 数据结构:明确是使用数据库、文件还是API方式获取数据
- 实体类:定义好对应的Java对象模型
- 查询逻辑:获取特定比赛ID下的两支球队数据
- 格式化输出:使用表格或清晰格式展示两队数据对比
- 异常处理:处理数据库连接、文件读取等可能出现的异常
根据你的实际使用场景(数据库、文件、API等),选择对应的实现方式即可,如果是在模拟数据场景,也可以直接创建对象测试。