Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

problème avec un tableau d'objets null

3 views
Skip to first unread message

eliereve

unread,
Jun 1, 2021, 6:37:09 AM6/1/21
to
Bonjour, j'ai un problème avec un jeux de patience que j'essaie de coder en
java. Au début, j'ai créé une classe Deck_dealer qui hérite d'une classe mère
Deck qui construit un paquet à partir d'une ArrayList d'objets Card qui est une
autre classe que j'ai créée (chaque carte a trois attributs, un teinte, une
couleur et une valeur) et ensuite quand je configure mon jeux, je crée un
tableau d'objets Deck_dealer et j'essaie de remplir chaque paquet avec des
cartes qui sont instanciées et mise dans un autre objet de type Stack qui
modélise la pioche. Le problème c'est que lorsque j'essaie de créer des tableaux
d'objets de type Deck_dealer pour mes 7 colonnes et que j'essaie d'instancier 7
Deck_dealer à travers une double boucle while et lorsque j'essaie de remplir
chacun des paquets avec une méthode qui ajoute des cartes depuis le stack vers
le tableau, ça ne marche pas. Le programme plante et me met Exception in thread
"main" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0.
Cordialement.
voici mon code :
final int pieux_count=4;
final int decks_count=7;

Pieux [] pieux_4=new Pieux[pieux_count];
Deck_dealer [] decks=new Deck_dealer[decks_count];
int i=0;
do
{
decks[i]=new Deck_dealer();
int j=0;
do
{
decks[i].deck.get(j).add_card(deck_dealer, j);
deck_dealer.remove_card(j);
j++;
}while(j<i+1);
i++;
}while(i<decks_count);

Yliur

unread,
Jun 2, 2021, 12:51:07 PM6/2/21
to
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++)
{
...
}
0 new messages