私はこのコードを持っています:
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. java.util.concurrent.Executors$RunnableAdapter.call で実行 (ThreadPoolManager.java:85) java.util.concurrent.FutureTask.run (不明なソース) で java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access でjava.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask で $201 (不明なソース)。java.util.concurrent.ThreadPoolExecutor.runWorker で実行 (未知のソース) java.util.concurrent.ThreadPoolExecutor$Worker.run (未知のソース) で java.lang.Thread.run (未知のソース) で
ここで何が起こっているのですか?89 行目は次のとおりfor(L2PcInstance player : players)
です。rnd.get()
から0
までなので、これは表示されませんplayers.size() - 1
。