Comment gérer l'exception java.lang.ArrayIndexOutOfBoundsException
Bonjour;
Voilà je suis entrain de construire un petit jeu en JAVA;
Voici le code source de la classe Grille:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| package Jeu;
public class Grille {
//attributs
private int nblig;
private int nbcol;
private char [][] grille;
//constructeur
public Grille (int n,int p){
nblig=n;
nbcol=p;
grille= new char [nblig][nbcol];
for(int i=0;i<nblig;i++){
for(int j=0;j<nbcol;j++){
grille[i][j]='o';
}
}
}
//accesseurs
public char getCase(int l, int c){
return grille [l-1][c-1];
}
//methodes
public void afficher (){
System.out.println();
for(int i=0;i<nblig;i++){
for(int j=0;j<nbcol;j++){
System.out.print("|" +grille[i][j]);
}
System.out.println("|");
}
System.out.println();
}
public void placerJ (int l,int c, char t){
l=l-1;
c=c-1;
if(l<0 || c<0 || l>nblig || c>nbcol){
System.out.println("Erreur, vous n'êtes pas sur la grille");
return;
}
if(grille [l][c]=='o'){
grille [l][c]= t;
}
else {
System.out.println("Erreur de placement");
}
}
public void deplacerHaut (){
char tmp;
for(int i=0;i<nblig;i++){
for(int j=0;j<nbcol;j++){
if(grille [i][j]=='J'){
if(i-1>=0 && grille[i-1][j]=='o'){
tmp=grille[i][j];
grille[i][j]='o';
grille[i-1][j]=tmp;
}
}
}
}
}
public void deplacerBas (){
char tmp;
for(int i=0;i<nblig;i++){
for(int j=0;j<nbcol;j++){
if(i+1<nblig && grille[i+1][j]=='o'){
if(grille [i][j]=='J'){
tmp=grille[i][j];
grille[i][j]='o';
grille[i+1][j]=tmp;
}
}
}
}
}
public void deplacerDroite (){
char tmp;
for(int i=0;i<nblig;i++){
for(int j=0;j<nbcol;j++){
if(grille [i][j]=='J'){
if(j+1<=nbcol && grille[i][j+1]=='o'){
tmp=grille[i][j];
grille[i][j+1]=tmp;
grille[i][j]='o';
}
}
}
}
}
public void deplacerGauche (){
char tmp;
for(int i=0;i<nblig;i++){
for(int j=0;j<nbcol;j++){
if(grille [i][j]=='J'){
if(j-1>=0 && grille[i][j-1]=='o'){
tmp=grille[i][j];
grille[i][j]='o';
grille[i][j-1]=tmp;
}
}
}
}
}
} |
Voici celui de la classe main:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package Jeu;
import java.util.*;
public class main {
public static void main (String [] args) {
Grille g1= new Grille (5,5);
System.out.println("J = Joueur\nO = Objet\nM = Monstre\n- = Vide\n");
g1.placerJ(3, 2, 'J');
g1.afficher();
System.out.println(g1.getCase(3,2));
g1.deplacerHaut();
g1.afficher();
g1.deplacerGauche();
g1.afficher();
g1.deplacerBas();
g1.afficher();
g1.deplacerDroite();
g1.afficher();
}
} |
Les deux méthodes deplacerBas et deplacerDroite ne marchent pas j'ai toujours ce résultat:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Jeu.Grille.deplacerDroite(Grille.java:97)
at Jeu.main.main(main.java:25)
Merci d'avance pour vos suggestions