java案例怎么看两队拦截抢断数据?

wen java案例 2

本文目录导读:

java案例怎么看两队拦截抢断数据?

  1. 场景一:从数据库读取(最常用)
  2. 场景二:通过JSON文件读取
  3. 场景三:从API接口获取(Web应用)
  4. 补充:数据格式化输出

在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("└────────────┴──────┴────────┴───────────────┘");
    }
}

  1. 数据结构:明确是使用数据库、文件还是API方式获取数据
  2. 实体类:定义好对应的Java对象模型
  3. 查询逻辑:获取特定比赛ID下的两支球队数据
  4. 格式化输出:使用表格或清晰格式展示两队数据对比
  5. 异常处理:处理数据库连接、文件读取等可能出现的异常

根据你的实际使用场景(数据库、文件、API等),选择对应的实现方式即可,如果是在模拟数据场景,也可以直接创建对象测试。

抱歉,评论功能暂时关闭!