Dans la pile d'appels tu dois avoir le numéro de la ligne qui pose
problème, je suppose que c'est celle-ci ?
decks[i].deck.get(j).add_card(deck_dealer, j);
Le message indique que tu as tenté d'accéder à l'élément 0 (le premier)
d'une liste de longueur 0 (la liste est vide).
Je pense que le problème est que tu as créé le tableau decks, qu'il
contient sans doute bien un objet dans l'attribut deck, mais que cet
objet est sans doute une liste qui est vide. Donc quand tu veux récupérer
l'élément j de cette liste avec get(j) ça plante. Il faut sans doute
créer un objet et le placer dans la liste, de la même manière que tu
remplis le tableau decks au fur et à mesure.
Autre remarque : en java il est plus naturel et plus lisible d'écrire ce
genre de boucles comme ça :
for (int i = 0 ; i < decks_count ; i++)
{
...
}