简体   繁体   English

Java索引超出范围错误

[英]Java index out of bounds error

I am writing the code in Java as a plugin to a Minecraft server, but the logical principles are general in nature. 我将Java代码编写为Minecraft服务器的插件,但是逻辑原理本质上是通用的。

public void doReviewMember(CommandSender playerSent) {
    if (!reviewsMember.isEmpty()) {
        Review doThis = null;

        ArrayList<Review> players = new ArrayList<Review>();
        ArrayList<Review> playersVIP = new ArrayList<Review>();
        ArrayList<Review> playersVIPplus = new ArrayList<Review>();

        for (int c1 = 0; c1 < reviewsMember.size(); c1++) {
            if  (Bukkit.getPlayer(reviewsMember.get(c1).getName()).hasPermission("reviewplugin.vipplus"))
                playersVIPplus.add(reviewsMember.get(c1));
            else if (Bukkit.getPlayer(reviewsMember.get(c1).getName()).hasPermission("reviewplugin.vip"))
                playersVIP.add(reviewsMember.get(c1));
            else players.add(reviewsMember.get(c1));
        }

        if (playersVIPplus.size() > 0)
            doThis = playersVIPplus.get(0);
        else if (playersVIP.size() > 0)
            doThis = playersVIP.get(0);
        else doThis = players.get(0);

        Bukkit.getPlayer(playerSent.getName()).sendMessage("§4[§6ReviewPlugin§4] §eThis review is for §b" + doThis.getName());
        Bukkit.getPlayer(playerSent.getName()).teleport(doThis.getLocation());
        reviewsMember.remove(doThis);
        if (reviewsMember.size() > 1)
            Bukkit.getPlayer(playerSent.getName()).sendMessage("§4[§6ReviewPlugin§4] §eThere are " + reviewsMember.size() + " member reviews left to do.");
        else if (reviewsMember.size() == 1)
            Bukkit.getPlayer(playerSent.getName()).sendMessage("§4[§6ReviewPlugin§4] §eThere is " + reviewsMember.size() + " member review left to do.");
        else
            Bukkit.getPlayer(playerSent.getName()).sendMessage("§4[§6ReviewPlugin§4] §eThere are no more Member reviews to do at this time!");
    }
    else {
        Bukkit.getPlayer(playerSent.getName()).sendMessage("§4[§6ReviewPlugin§4] §eThere are no more Member reviews to do at this time!");
    }
}

The index out of bounds error was occurring in the for loop, so I have no idea where I am going wrong. 索引超出范围错误发生在for循环中,所以我不知道我要去哪里。 This was tested w/o error on a Windows 8 machine but when implemented into a Linux it failed every time with the index out of bounds error. 这已在Windows 8计算机上经过了无错误测试,但是在Linux中实施时,每次都失败,并出现索引越界错误。

The above code cannot fail unless some background thread modifies the array in the middle of the loop. 除非某些后台线程在循环中间修改数组, 否则以上代码不会失败。 Which is most likely the reason for your problem. 这很可能是您遇到问题的原因。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM