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

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