【问题标题】:Java ArrayList Out of Bounds Exeption [closed]Java ArrayList Out of Bounds Exeption [关闭]
【发布时间】:2016-05-12 01:15:51
【问题描述】:

我正在制作二十一点游戏(非 GUI),我将编写算法来决定是否接收另一张牌、下注多少等。当我添加值时,我在 ArrayList 上收到一个超出范围的错误。感谢您的帮助。

    package idk;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Random;

    public class Something {
    public static void main(String[] args) {
    Something something = new Something();
    ArrayList<Integer> place=new ArrayList<Integer>();
    int i;
    for(i=0; i<4; i++)
    {
        place.add(2);
    }
    for(i=4; i<8; i++)
    {
        place.add(3);
    }
    for(i=8; i<12; i++)
    {
        place.add(4);
    }
    for(i=12; i<16; i++)
    {
        place.add(5);
    }
    for(i=16; i<20; i++)
    {
        place.add(6);
    }
    for(i=20; i<24; i++)
    {
        place.add(7);
    }
    for(i=24; i<28; i++)
    {
        place.add(8);
    }
    for(i=28; i<32; i++)
    {
        place.add(9);
    }
    for(i=32; i<48; i++)
    {
        place.add(10);
    }
    for(i=48; i<52; i++)
    {
        place.add(11);
    }
    for(i=0; i<52; i++)
    {
        System.out.println(place.get(i));
    }
    int[] dealer;
    dealer = new int[28];
    for(int w=0; w<2; w++)
    {
     int min = 0;
        int max = 52;
       int range = (max - min);

        int random = new Random().nextInt(range + 1) + min;
       int card = place.get(random);
       dealer[i]=card;
       place.remove(random);
       if(i==1)
       {
           System.out.println("The dealer's face up card is " + card);
       }

    }







}

}

【问题讨论】:

  • 读取异常。转到它告诉您有问题的行。弄清楚值是如何越界的。使固定。您是否希望我们为您构建代码并为您完成所有这些工作?
  • 谢谢,我有更多的编码和开发工作要做,因此算法将为我做出决定。

标签: java arraylist blackjack


【解决方案1】:

问题在于这一行dealer[i]=card;

检查i的值,它大于dealer[]的声明大小。

在最后一个fori 循环之后,i 的值将为 52,dealer[] 的大小为 28。

【讨论】:

  • 另外,nextInt(range + 1) 应该只是 range,因为 52 已经是一个独占上限。最后,永远不要在二十一点程序中获得 ace 11:这会使后面的代码过于复杂。将 ace 设为 1,然后将 10 添加到任何少于 12 且至少包含一次 ace 的手牌中。更简单、更可靠的代码。最后,你知道你可以嵌套循环,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 2020-09-24
  • 2021-10-18
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多