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

如何修复游戏用户高分逻辑中HashMap内的条件判断语句?

修复游戏高分更新的条件判断语句

先帮你梳理下这段代码里的关键问题,再一步步修正:

原代码的核心错误

  • key取值错误:map.get(highscore)完全不符合逻辑——你的HashMap是以username作为key存储用户高分的,要获取该用户的历史最高分,应该用map.get(username),而不是把highscore当成key去查找。
  • 比较逻辑颠倒:你的需求是当前score高于用户历史最高分才更新,但原代码写的是map.get(...) > score,这会导致只有旧分比当前分高时才执行更新,完全和需求相反。
  • 更新变量错误:map.put(name, highscore)里的name未定义,且要存入的应该是当前的score(新的高分),而不是原来的highscore。

修复后的完整代码

if (map.containsKey(username)) {
    System.out.println("Score for " + username + " is already present");
    // 先取出用户当前的历史最高分,存成变量更高效也更易读
    int currentHighScore = map.get(username);
    // 按照需求判断:当前分数是否高于历史最高分
    if (score > currentHighScore) {
        // 更新为新的最高分
        map.put(username, score);
        System.out.println("Updated high score for " + username + " to " + score);
    }
} else {
    // 补充用户不存在的场景:第一次玩直接存入当前分数作为初始最高分
    map.put(username, score);
    System.out.println("Added new high score for " + username + ": " + score);
}

额外优化说明

我补充了else分支处理用户首次游戏的场景(毕竟HashMap里没有用户记录时,应该直接存入当前分数),同时把历史最高分存入变量currentHighScore,避免重复调用map.get(username),既提升了代码可读性,也减少了HashMap的查询次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:07:47