我有这个代码:
int rnd1=Rnd.get(players.size());
int rnd2=Rnd.get(players.size());
while(rnd2==rnd1)
rnd2=Rnd.get(players.size());
for(L2PcInstance player : players)
{
if(player != players.get(rnd1) && player != players.get(rnd2))
players.remove(player);
}
我有这个错误:
线程“GeneralSTPool-8”中的异常 java.lang.ArrayIndexOutOfBoundsException: 2 at java.util.concurrent.CopyOnWriteArrayList.get(Unknown Source) at java.util.concurrent.CopyOnWriteArrayList.get(Unknown Source) at net.sf.l2j。 gameserver.model.RandomFight.pickPlayers(RandomFight.java:89) 在 net.sf.l2j.gameserver.model.RandomFight$pickPlayers.run(RandomFight.java:270) 在 net.sf.l2j.gameserver.ThreadPoolManager$RunnableWrapper。 run(ThreadPoolManager.java:85) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask 的 $201(未知来源)。在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) run(Unknown Source)
这里发生了什么?第 89 行是这样的:for(L2PcInstance player : players)
。这不应该出现,因为rnd.get()
is from 0
to players.size() - 1
。