-2

さて、私は現在 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;
        }
    }

}

私が取得し続ける例外は次のとおりです。

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)

私はいくつかのことを試しましたが、どれもうまくいかなかったので、どこが間違っていたのかについてのアイデアをいただければ幸いです.

4

3 に答える 3

1

使用する

if(bcnumber < bcm.size()-1)

サイズが 3 の場合、インデックスは 0,1,2 になります。bcnumber = 2 の場合を考える

于 2013-08-05T11:44:03.087 に答える