Java.lang.ArrayIndexOutOfBoundsException: 1

Fermé
domxaline - 8 juil. 2015 à 16:00
 domxaline - 9 juil. 2015 à 15:14
Bonjour,
mon prg affiche le message suivant, aidez moi svp

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Divers3.main(Divers3.java:15)

import java.util.Scanner;
public class Divers3
{
public static void main(String[] args)
{
int i, j, posi, posj, i2, j2,dep = 0;
posi=0;
posj=0;
boolean correct,moveOk;
boolean[][] damier = new boolean [7][7];
int[][]mouv=new int [3][1];

//choix 0:pion en haut à droite
mouv[0][0]=-1;
<strong>mouv[0][1]=-1;</strong>

//choix 1:pion en haut à gauche
mouv[1][0]=-1;
mouv[1][1]=1;

//choix 2:pion en bas à gauche
mouv[2][0]=1;
mouv[2][1]=-1;

//choix 3:pion en bas à droite
mouv[3][0]=1;
mouv[3][1]=1;

//initialisation du damier; le pion n'est pour le moment nulle part
for(i=0;i<damier.length;i++)
{
for(j=0;j<damier.length;j++)
{
damier[i][j]=false;
}
}
//saisie de la coordonée en i (posi)avec contrôle de saisie
correct=false;
while(!correct)
{
System.out.println("Entrez la ligne de votre pion:");
Scanner sc=new Scanner(System.in);
posi=sc.nextInt();
if(posi>=0 && posi<=7)
{
correct=true;
}
}
//saisie de la coordonée en j (posj)avec contrôle de saisie
correct=false;
while(!correct)
{
System.out.println("Entrez la colonne de votre pion:");
Scanner sc=new Scanner(System.in);
posj=sc.nextInt();
if(posj>=0 && posj<=7)
{
correct=true;
}
}
//positionnement du pion sur le damier virtuel
damier[posi][posj]=true;
//saisie du déplacement, avec contrôle
System.out.println("Quel déplacement?");
System.out.println("-0: en haut à gauche");
System.out.println("-1: en haut à droite");
System.out.println("-2: en bas à gauche");
System.out.println("-3: en bas à droite");
correct=false;
while(!correct)
{
Scanner sc=new Scanner(System.in);
dep=sc.nextInt();
if(dep>=0 && dep<=3)
{
correct=true;
}
}
//i2 et j2 sont les futurs coordonnées du pion. La variable boooléene mouvOk vérifie la validité de ce futur emplavement
i2=posi+mouv[dep][0];
j2=posj+mouv[dep][1];
moveOk=i2>=0 && i2<=7 && j2<=0 && j2<=7;
//cas où le déplacement est valide
if(moveOk)
{
damier[posi][posj]=false;
damier[i2][j2]=true;
//affichage du nouveau damier
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
if(damier[i][j])
{
System.out.println("O");
}
else
{
System.out.println("X");
}
}
System.out.println("***");
}
}
else
{
//cas où le déplacement n'est pas valide
System.out.println("mouvement impossible");
}
}
}



4 réponses

Nhhi Messages postés 332 Date d'inscription lundi 28 avril 2014 Statut Membre Dernière intervention 6 mars 2016 299
8 juil. 2015 à 16:13
Dans "new int [3][1]" tu déclare une longueur de 1 pour la 2e colonne et juste après "mouv[1][1]" t'essaie d'accéder à la 2e position.
0
en écriavant comme ceci


boolean[][] damier = new boolean [7][7];
int[][]mouv=new int [3][2];

//choix 0:pion en haut à droite
mouv[0][0]=-1;
mouv[0][1]=-1;

//choix 1:pion en haut à gauche
mouv[1][0]=-1;
mouv[1][1]=1;

//choix 2:pion en bas à gauche
mouv[2][0]=1;
mouv[2][1]=-1;

//choix 3:pion en bas à droite
mouv[3][0]=1;
mouv[3][1]=1;

j'ai erreur suivante:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Divers3.main(Divers3.java:26)
0
j'ai corrigé

//choix 0:pion en haut à droite
mouv[0][0]=-1;
mouv[0][1]=-1;

//choix 1:pion en haut à gauche
mouv[1][0]=-1;
mouv[1][1]=1;

//choix 2:pion en bas à gauche
mouv[2][0]=1;
mouv[2][1]=-1;

//choix 3:pion en bas à droite
//mouv[3][0]=1;
//mouv[3][1]=1;

après avoir éxécute ce prg, pour chaque mouvement
il annonce
"mouvement impossible"

Entrez la ligne de votre pion:
4
Entrez la colonne de votre pion:
4
Quel déplacement?
-0: en haut à gauche
-1: en haut à droite
-2: en bas à gauche
-3: en bas à droite
2
mouvement impossible

veuillez m'aidez svp
0
j'ai corrigé mon prg, mais il faut que jusqu'au 0, 1, 2 mouvement
il fait pas 3eme mouvement
il me donne ce message:
Quel déplacement?
-0: en haut à gauche
-1: en haut à droite
-2: en bas à gauche
-3: en bas à droite
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Divers3.main(Divers3.java:88)

import java.util.Scanner;
public class Divers3
{
public static void main(String[] args)
{
char reponse='O';
do
{
int i, j, posi, posj, i2, j2,dep = 0;
posi=0;
posj=0;
boolean correct,moveOk;
boolean[][] damier = new boolean [7][7];
int[][]mouv=new int [3][2];
//int[][]mouv=new int [3][3];
//choix 0:pion en haut à droite
mouv[0][0]=-1;
mouv[0][1]=-1;

//choix 1:pion en haut à gauche
mouv[1][0]=-1;
mouv[1][1]=1;

//choix 2:pion en bas à gauche
mouv[2][0]=1;
mouv[2][1]=-1;

//choix 3:pion en bas à droite
//mouv[3][0]=1;
//mouv[3][1]=-1;
//mouv[3][2]=1;

//initialisation du damier; le pion n'est pour le moment nulle part
for(i=0;i<damier.length;i++)
{
for(j=0;j<damier.length;j++)
{
damier[i][j]=false;
}
}
//saisie de la coordonée en i (posi)avec contrôle de saisie
correct=false;
while(!correct)
{
System.out.println("Entrez la ligne de votre pion:");
Scanner sc=new Scanner(System.in);
posi=sc.nextInt();
if(posi>=0 && posi<=7)
{
correct=true;
}
}
//saisie de la coordonée en j (posj)avec contrôle de saisie
correct=false;
while(!correct)
{
System.out.println("Entrez la colonne de votre pion:");
Scanner sc=new Scanner(System.in);
posj=sc.nextInt();
if(posj>=0 && posj<=7)
{
correct=true;
}
}
//positionnement du pion sur le damier virtuel
damier[posi][posj]=true;
//saisie du déplacement, avec contrôle
System.out.println("Quel déplacement?");
System.out.println("-0: en haut à gauche");
System.out.println("-1: en haut à droite");
System.out.println("-2: en bas à gauche");
System.out.println("-3: en bas à droite");
correct=false;
while(!correct)
{
Scanner sc=new Scanner(System.in);
dep=sc.nextInt();
//if(dep>=0 && dep<=3)
//if(dep>=0 && dep<=2)
if(dep>=0 && dep<=3)
{
correct=true;
}
}
//i2 et j2 sont les futurs coordonnées du pion. La variable boooléene mouvOk vérifie la validité de ce futur emplavement
//i2=posi+mouv[dep][0];
//j2=posj+mouv[dep][1];
i2=posi+mouv[dep][0];
j2=posj+mouv[dep][1];
moveOk=i2>=0 && i2<=7 && j2>=0 && j2<=7;
//cas où le déplacement est valide
if(moveOk)
{
damier[posi][posj]=false;
damier[i2][j2]=true;
//affichage du nouveau damier
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
if(damier[i][j])
{
System.out.print("O");
}
else
{
System.out.print("X");
}
}
System.out.println("***");
}
}
else
{
//cas où le déplacement n'est pas valide
System.out.println("mouvement impossible");
}

System.out.println("Vous voulez reessayer(O/N):");
Scanner sc=new Scanner(System.in);
reponse=sc.nextLine().charAt(0);
}
while(reponse=='O');
System.out.println("Au revoir...");
}
}

aidez moi svp
0