2013-08-05 46 views
-2

好吧,我正在開發一個Bukkit插件,並決定添加一個安排廣播的功能。爲了存儲廣播,我使用config.yml文件並從那裏接收廣播。我遇到的問題是代碼不斷返回和我還沒有能夠修復的IndexOutOfBoundsException。java.lang.IndexOutOfBoundsException錯誤Bukkit Plugin

這裏是我的代碼:

package uk.co.thek4web.broadcaster; 

import java.util.List; 
import org.bukkit.scheduler.BukkitRunnable; 

public class bcscheduler extends BukkitRunnable { 

    private Broadcaster plugin; 
    public bcscheduler(Broadcaster plugin){ 
     this.plugin = plugin; 
    } 
    private int bcnumber = 0; 
    public void run() { 
     //String list from config 
     List<String> bcm = plugin.message(); 
     //Broadcasts the next broadcast messsage in the config 
     plugin.bc(bcm.get(bcnumber)); 
     //Makes sure broadcasts don't repeat, goes onto the next broadcast. 
     if(bcnumber < bcm.size()){ 
      bcnumber++; 
     } 
     else{ 
      bcnumber = 0; 
     } 
    } 

} 

這裏是我不斷收到異常:

2013-08-04 20:20:43 [WARNING] [Boss Broadcast] Task #4 for Boss Broadcast v0.3 generated an exception 
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 
    at java.util.ArrayList.rangeCheck(ArrayList.java:603) 
    at java.util.ArrayList.get(ArrayList.java:381) 
    at uk.co.thek4web.broadcaster.bcscheduler.run(bcscheduler.java:16) 
    at org.bukkit.craftbukkit.v1_6_R2.scheduler.CraftTask.run(CraftTask.java:53) 
    at org.bukkit.craftbukkit.v1_6_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345) 
    at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:522) 
    at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226) 
    at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486) 
    at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419) 
    at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) 

我已經嘗試了一些事情,但他們都沒有工作等確切位置的任何想法,我出錯了,將不勝感激。

+1

我覺得'if(bcnumber keyser

回答

0

你的問題是你要出門列表的大小。順便說說這裏關於你的代碼的一些建議

List<String> bcm = plugin.message(); 

// You must check that your list isn't empty before doing your instructions 
if((bcm != null) && !bcm.isEmpty()){ 
    plugin.bc(bcm.get(bcnumber)); 


    if(bcnumber < bcm.size()-1){ 
     bcnumber++; 
    } 
    else{ 
     bcnumber = 0; 
    } 
} 


} 
1

使用

如果(bcnumber < bcm.size() - 1)

比方說,大小爲3,則指數將是0,1,2。考慮當bcnumber = 2

1

使用

public void run() { 
    List<String> bcm = plugin.message(); 
    plugin.bc(bcm.get(bcnumber++)); 
    bcnumber = bcnumber % bcm.size(); 
} 
相關問題