我正在嘗試根據(jù)用戶可以設(shè)置的計時器遍歷列表。但是我找不到在TimerTaskrunnable中做這件事的好方法??傮w思路可以在我下面分享的代碼中找到。Announcements是List一個List<String>。在每個間隔上,我都想announcement從中獲取下一個間隔announcements并顯示其中的字符串。除了計時器超過多個,我已經(jīng)完成了所有工作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);使用我發(fā)布的代碼,我得到了一個IndexOutOfBoundsException,它甚至從不發(fā)布任何消息。如果我刪除迭代器代碼,它將announcement無休止地顯示第一個。
1 回答

qq_花開花謝_0
TA貢獻(xiàn)1835條經(jīng)驗 獲得超7個贊
您有錯誤的以下情況:
if(iterator?>?announcements.size())
在這種情況下,超出了列表的大小,因此IndexOutOfBoundsException
被拋出。但是條件應(yīng)該檢查是否iterator
大于或等于列表的大?。?/p>
if(iterator?>=?announcements.size())
添加回答
舉報
0/150
提交
取消