java.lang.IndexOutOfBoundsException错误Bukkit插件

java.lang.IndexOutOfBoundsException错误Bukkit插件,java,plugins,bukkit,Java,Plugins,Bukkit,好的,我现在正在开发一个Bukkit插件,并决定添加一个可以安排广播的功能。为了存储广播,我使用config.yml文件并从中获取广播。我遇到的问题是代码不断返回,IndexOutOfBoundsException我还没能修复 这是我的密码: package uk.co.thek4web.broadcaster; import java.util.List; import org.bukkit.scheduler.BukkitRunnable; public class bcschedule

好的,我现在正在开发一个Bukkit插件,并决定添加一个可以安排广播的功能。为了存储广播,我使用config.yml文件并从中获取广播。我遇到的问题是代码不断返回,IndexOutOfBoundsException我还没能修复

这是我的密码:

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;
        }
    }

}
我试过一些方法,但都不管用,所以如果你能告诉我哪里出了问题,我会很感激的

使用

如果(bcnumber 假设大小为3,指数将为0,1,2。考虑BcType=2

使用< < /P>时的情况

public void run() {
  List<String> bcm = plugin.message();
  plugin.bc(bcm.get(bcnumber++));
  bcnumber = bcnumber % bcm.size();
}
public void run(){
列表bcm=plugin.message();
plugin.bc(bcm.get(bcnumber++));
bcnumber=bcnumber%bcm.size();
}

您的问题是您超出了列表大小。顺便说一下,这里有一些关于代码的建议

 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;
    }
 }


}
List bcm=plugin.message();
//在执行指令之前,必须检查列表是否为空
如果((bcm!=null)和&!bcm.isEmpty()){
plugin.bc(bcm.get(bcnumber));
如果(bcnumber
我认为
如果(bcnumber
是你的问题。当它小于
bcm.size()
时,它仍然会增加一次超过大小。因此,
bcm.size()-1
修复了它。
 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;
    }
 }


}