Java 有没有办法将arraylist中的整数相加?
我尝试将arraylist中的整数相加,以便让用户看到有多少人排队等待1v1。这是我的代码:` 包me.sub.cpracce.QueueJava 有没有办法将arraylist中的整数相加?,java,Java,我尝试将arraylist中的整数相加,以便让用户看到有多少人排队等待1v1。这是我的代码:` 包me.sub.cpracce.Queue Main plugin; public JoinQueue(Main plugin) { this.plugin = plugin; } @Override public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) { if
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。有什么帮助吗?首先,您的问题根本不包含
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))
提示:可以使用
mapToInt
代替map
,然后调用sum()
而不是reduce
,比如:.mapToInt(Integer::parseInt).sum()
不错的提示,没有想到这一点,但如前所述,因为他已经在ArrayList
中存储了数字,所以不需要处理数字字符串sum()
方法在第二种情况下也更合适。