我正在尝试将数组列表中的整数添加在一起,以便让人们看到有多少人在排队等待 1v1。这是我的代码:` 包 me.sub.cPractice.Queue;
Main plugin;
public JoinQueue(Main plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
if (cmd.getName().equalsIgnoreCase("queuetest")) {
Player p = (Player) sender;
new BukkitRunnable() {
@Override
public void run() {
if (plugin.inqueue.contains(p)) {
String replaced = PlaceholderAPI.setPlaceholders(p, "%server_online%");
ScoreHelper helper = ScoreHelper.createScore(p);
helper.setTitle("&6&lGoldHQ &r&7┃ &rPractice");
helper.setSlot(8, "&7&m---------------------");
helper.setSlot(7, "&eOnline: &f" + replaced);
helper.setSlot(6, "&eIn Fights: &f" + plugin.infightnumber.toString().replace("[", "").replace("]", ""));
helper.setSlot(5, "&7&m---------------------");
helper.setSlot(4, "&eQueued For: &fNoDebuff");
helper.setSlot(3, "" + plugin.inqueuenumber.toString().replace("[", "").replace("]", ""));
helper.setSlot(2, "&7&ogoldhq.net");
helper.setSlot(1, "&7&m---------------------");
}
}
}.runTaskTimer(plugin, 20L, 20L);
}
return false;
}
` 我已经被困在这个问题上几个小时了,但我还没有找到任何有用的东西。当我希望它显示为 2 时,它显示为 1, 1。有帮助吗?
最佳答案
首先,您的问题根本不包含 ArrayList
。我猜你的问题出在:
helper.setSlot(3, "" + plugin.inqueuenumber.toString().replace("[", "").replace("]", ""));
您可以使用以下代码将该数字合并在一起:
helper.setSlot(3, "" + Arrays.stream(plugin.inqueuenumber.toString()
.replace("[", "")
.replace("]", "")
.split(",")
).map(Integer::parseInt)
.reduce(0, (subtotal, current) -> subtotal + current)
)
编辑:我注意到 plugin.inqueuenumber
是您一直在谈论的 ArrayList
,因此以下内容也应该有效,而以前的解决方案是多余的:
helper.setSlot(3, "" + plugin.inqueuenumber.stream().reduce(0, (l, r) -> l + r))
关于java - 有没有办法将数组列表中的整数添加在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63144470/