【问题标题】:java.lang.ArrayIndexOutOfBoundsException: 0 When using ArrayListjava.lang.ArrayIndexOutOfBoundsException: 0 使用 ArrayList 时
【发布时间】:2018-09-09 00:24:15
【问题描述】:

由于某种原因,当我尝试运行此代码时会引发此异常,但我不知道如何修复它。我知道这与列表的内容有关,但是我已经在此方法之外声明了它们,但是仍然抛出异常。

public class Deck {
private int i;
Random rand = new Random();
public String[] playerHand = {};
private String[] computerHand = {};
public String[] deck = {"CA", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "CJ", "CQ", "CK", "DA", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "DJ", "DQ", "DK", "HA", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "HJ", "HQ", "HK", "SA", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "SJ", "SQ", "SK2"};
private  ArrayList<String> deckList = new ArrayList<String(Arrays.asList(deck));
private String[] pile = {};
ArrayList<String> pileList = new ArrayList<String>(Arrays.asList(pile));

public void startGame(){
   for(i = 0; i < 5; i++){
       playerHand[i] = deckList.get(rand.nextInt(deckList.size()));

       deckList.remove(playerHand[i]);
   }
    for(i = 0; i < 5; i++){
       computerHand[i] = deckList.get(rand.nextInt(deckList.size()));
       deckList.remove(computerHand[i]);
    }
    pile[0] = deckList.get(rand.nextInt(deckList.size()));
    deckList.remove(pile[0]);

}

抛出的异常是“线程“主”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0 在 card.game.Deck.startGame(Deck.java:28)"

不确定,但随机函数可能与它有关。

【问题讨论】:

    标签: java arrays arraylist random


    【解决方案1】:

    pile 是一个空数组,因此任何取消引用pile[0] 的尝试都会抛出ArrayIndexOutOfBoundsException

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-30
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多