Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème avec un tableau d'objets null

1 réponse
Avatar
eliereve
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);

1 réponse

Avatar
Yliur
Le Tue, 01 Jun 2021 05:37:08 -0500, eliereve a écrit :
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);

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++)
{
...
}