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

Bukkit开发求助:HashMap中蓝队玩家总分计算问题

解决Bukkit中蓝队玩家总分计算问题

嘿,我来帮你搞定这个分数计算的问题~先看看你代码里的几个核心问题:

  • 你初始化的blueteam是个全新的空ArrayList,循环根本不会跑起来,自然拿不到任何玩家的分数;
  • 就算列表有玩家,你现在只是逐个打印单玩家分数,没有做累加操作;而且如果score里没存某个玩家的分数,get()方法会返回null,这就是你看到null的原因。

修正后的代码示例

先确保你能正确获取到蓝队的玩家列表,然后做分数累加:

// 第一步:获取真实的蓝队玩家列表(替换成你实际的团队获取逻辑)
List<Player> blueteam = Bukkit.getScoreboardManager()
                              .getMainScoreboard()
                              .getTeam("BlueTeam")
                              .getPlayers();

int totalBlueScore = 0; // 初始化总分变量
for (Player bluePlayer : blueteam) {
    // 用getOrDefault避免null,玩家无分数记录时默认加0分
    int playerScore = score.getOrDefault(bluePlayer, 0);
    totalBlueScore += playerScore; // 累加每个玩家的分数
}

// 输出最终总分
msg(sender, "Blue team's total score: " + totalBlueScore);

关键注意点

  1. 填充蓝队玩家列表:你得通过Bukkit的计分板API(或者你自己的团队管理逻辑)把真实的蓝队玩家放进blueteam里,不能直接new一个空列表。
  2. 避免null异常:用getOrDefault()替代直接get(),确保即使玩家没有分数记录,程序也不会报错,只会默认加0分。
  3. 总分累加逻辑:必须初始化一个总分变量,在循环里逐个把玩家分数加进去,最后输出这个累加后的变量,而不是单个玩家的分数。

另外,你还可以加个小检查:如果blueteam为空,就输出提示“蓝队暂无玩家”,这样逻辑更完善~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:04:23