Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExcept

Résolu/Fermé
Rhegar Messages postés 10 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 9 mars 2013 - 9 mars 2013 à 17:13
Rhegar Messages postés 10 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 9 mars 2013 - 9 mars 2013 à 17:38
Bonjour,

Je suis en train d'essayer de coder une partie de domino sous Java.

public class Domino
{
public static void main (String args[])
{
ArrayList<int []> pioche=new ArrayList<int []>();
Random gen = new Random();

for (int i=0;i<7;i++)
{
for (int j=0;j<=i;j++)
{
pioche.add(new int[]{i,j});
System.out.print("("+ i + ", " + j + ") ");
}
System.out.println();
}

int[][] joueur1_pioche=new int[7][49];
int[][] joueur2_pioche=new int[7][49];
int [] main_du_joueur1 = null;
int [] main_du_joueur2 = null;

for (int i=0;i<joueur1_pioche.length;i++)
{
main_du_joueur1=pioche.get(gen.nextInt(pioche.size()));
main_du_joueur2=pioche.get(gen.nextInt(pioche.size()));
pioche.remove(main_du_joueur1);
pioche.remove(main_du_joueur2);
joueur1_pioche[i] = main_du_joueur1;
joueur2_pioche[i] = main_du_joueur2;

}
System.out.println("\nPioche\tJoueur 1\tJoueur 2");

for (int i=0;i<joueur1_pioche.length;i++)
{
System.out.print((i+1) +": \t ");

for (int j=0;i<joueur1_pioche.length;j++)
{
System.out.print(joueur1_pioche[i][j] + " ");


Et la je reçois une erreur du type Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExcept correspondant à la dernière ligne du code ci dessus.
Je pense que cela à avoir avec le int[][] joueur1_pioche=new int[7][49]; mais je ne vois pas ou.

Merci bien.

A voir également:

3 réponses

KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
9 mars 2013 à 17:17
Tu as mélangé i et j : (int j=0;i<joueur1_pioche.length;j++)
Ici c'est un j qu'il faut mettre !
1
Darktn Messages postés 24 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 6 février 2014 1
9 mars 2013 à 17:18
https://openclassrooms.com/fr/courses
tu doit apprendre a gérer les exceptions
1
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
9 mars 2013 à 17:20
ArrayIndexOutOfBoundsException est une RuntimeException, elle n'a pas à être gérée !
0
Rhegar Messages postés 10 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 9 mars 2013
9 mars 2013 à 17:22
Oui je comprend, quelle est alors la manip pour trouver l'erreur ?
0
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
9 mars 2013 à 17:25
Comme elles ne sont généralement pas rattrapés (puisqu'elle proviennent a priori d'une erreur dans le code) ces exceptions arrêtent le programme et s'affichent. Il suffit donc de lire l'exception pour savoir où et pourquoi ça a planté.. Par exemple ici, on a aurait le numéro de ligne et l'indice qui a planté (qui correspond à l'indice j==joueur1_pioche[i].length, c'est à dire 49), puisque c'est le premier indice qui plante...
0
Rhegar Messages postés 10 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 9 mars 2013
9 mars 2013 à 17:20
Merci pour le i transformé en j.
Mais malheureusement cela ne résout pas le problème.
0
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
9 mars 2013 à 17:22
En effet, l'erreur est plus grave que ça, parce que c'est toute ta condition d'arrêt qui est fausse, en effet la taille du tableau joueur1_pioche[i] est joueur1_pioche[i].length, et non joueur1_pioche.length.

for (int j=0; j<joueur1_pioche[i].length; j++) 
0
Rhegar Messages postés 10 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 9 mars 2013
9 mars 2013 à 17:25
En effet c'était bien ça. POuvez vous m'expliquer mon erreur, enfin ce que cela produisait ? Merci
0
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
9 mars 2013 à 17:27
Tu as juste fait un mauvais copier-coller. joueur1_pioche.length==7 et joueur1_pioche[i].length==49, tu ne peux pas utiliser l'un à la place de l'autre alors que les valeurs sont différentes.
0
Rhegar Messages postés 10 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 9 mars 2013
9 mars 2013 à 17:38
Ok merci !
0