2016-02-03 3 views
-3

Я делаю игру в блэкджек (NON GUI), и я буду писать алгоритмы, чтобы решить, получать ли другую карту, сколько делать ставки и т. Д. Я получаю ошибку за пределами ArrayList когда я добавляю значения. Спасибо за помощь.Java ArrayList Out of Bounds Exeption

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); 
     } 

    } 







} 

}

+0

прочитать исключение. Перейдите к строке, в которой говорится, что у вас есть проблема. Посмотрите, как значение получилось за пределами. Фикс. Вы ожидаете, что мы построим ваш код и сделаем все для вас? – John3136

+0

Спасибо, у меня есть намного больше кодирования и разработки, чтобы сделать так, что алгоритмы будут принимать решения для меня. – user5657150

ответ

1

Проблема с этой линии dealer[i]=card;

Проверить значение i, оно больше заявленного размера dealer[].

После последнего цикла for с i, значение i будет 52, а dealer[] размер 28.

+0

Кроме того, 'nextInt (range + 1)' должен быть просто 'range', потому что 52 уже является эксклюзивной верхней границей. Наконец, никогда не делайте тузы 11 в программах блэкджека: это делает более поздний код слишком сложным. Сделайте асы 1, затем просто добавьте 10 к любой руке меньше 12, которая содержит хотя бы один раз туз. Намного проще, надежнее. И, наконец, вы знаете, что можете вложить петли, верно? –