You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用循环从MySQL逐行取数据?求分配评委评分代码的帮助

解决MySQL逐行取分并分配给对应部门&评委的问题

嘿,我看了你的代码和需求,发现现有逻辑存在明显的问题——它会把同一条分数记录重复分配给所有部门的所有评委,这肯定不是你想要的效果。咱们来梳理下正确的实现思路,再调整代码。

原代码的核心问题

你当前的循环结构是:先取一行分数,然后嵌套遍历所有部门和评委,把这个分数反复添加给每个部门的每个评委。这完全违背了“3位评委的分数对应对应部门”的需求。

正确的实现逻辑(分两种场景)

场景1:数据库分数按「部门+评委顺序」存储

假设你的scores表中,分数是按「每个部门对应3位评委的分数连续排列」的规则存储(比如部门1的3个分数→部门2的3个分数→...),那循环结构要反过来:先遍历部门,再对每个部门遍历评委,每次取一行对应的分数。

修正后的代码:

int score;
String sql = "SELECT score FROM scores";
ResultSet rs = stmt.executeQuery(sql);

// 遍历每个部门
for (int i = 0; i < al.getNumOfDepartments(); i++) {
    Department currentDept = al.getDepartment(i);
    // 为当前部门分配3位评委的分数
    for (int j = 0; j < jl.getNumOfJudges(); j++) {
        // 确保还有下一行分数记录
        if (rs.next()) {
            score = rs.getInt("score");
            Judge currentJudge = jl.getJudge(j);
            Score scoreObj = new Score(score, currentJudge);
            currentDept.addScore(scoreObj);
        } else {
            // 处理数据库分数记录不足的异常情况
            System.err.println("警告:数据库中的分数记录数量不足!");
            break;
        }
    }
}

场景2:数据库有部门/评委关联字段(更推荐)

如果你的scores表本身就有department_id和judge_id字段(用来关联对应的部门和评委),那更严谨的做法是通过SQL关联查询,直接精准匹配,不用依赖记录顺序:

// 关联查询分数、评委和部门的对应关系
String sql = "SELECT s.score, j.id AS judge_id, d.id AS dept_id " +
             "FROM scores s " +
             "JOIN judges j ON s.judge_id = j.id " +
             "JOIN departments d ON s.department_id = d.id";
ResultSet rs = stmt.executeQuery(sql);

// 遍历所有匹配的结果
while (rs.next()) {
    int score = rs.getInt("score");
    int judgeId = rs.getInt("judge_id");
    int deptId = rs.getInt("dept_id");
    
    // 根据ID获取对应的评委和部门(需要你实现这两个根据ID查询的方法)
    Judge targetJudge = jl.getJudgeById(judgeId);
    Department targetDept = al.getDepartmentById(deptId);
    
    if (targetJudge != null && targetDept != null) {
        Score scoreObj = new Score(score, targetJudge);
        targetDept.addScore(scoreObj);
    }
}

这个方法更可靠,因为它不依赖数据库中记录的排列顺序,而是通过关联字段精准匹配,适合数据可能乱序的生产场景。

内容的提问来源于stack exchange,提问作者Abderahim Ennejjai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:51:51