为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 中使用 scheduleAtFixedRate 遍历列表

在 Java 中使用 scheduleAtFixedRate 遍历列表

FFIVE 2023-06-08 14:48:21
我正在尝试根据用户可以设置的计时器遍历列表。但是我找不到在TimerTaskrunnable中做这件事的好方法。总体思路可以在我下面分享的代码中找到。Announcements是List一个List<String>。在每个间隔上,我都想announcement从中获取下一个间隔announcements并显示其中的字符串。除了计时器超过多个,我已经完成了所有工作announcements: timer.scheduleAtFixedRate(new TimerTask() {        int iterator = 0;        @Override        public void run() {            List<String> announcement = announcements.get(iterator);            for (String line : announcement) {                Bukkit.broadcastMessage(line);            }            iterator++;            if(iterator > announcements.size()){                iterator = 0;            }        }    }, 0, (int)config.get("interval")*1000);使用我发布的代码,我得到了一个IndexOutOfBoundsException,它甚至从不发布任何消息。如果我删除迭代器代码,它将announcement无休止地显示第一个。
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

您有错误的以下情况:

if(iterator > announcements.size())

在这种情况下,超出了列表的大小,因此IndexOutOfBoundsException被抛出。但是条件应该检查是否iterator大于或等于列表的大小:

if(iterator >= announcements.size())


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信