Java: IndexOutOfBoundsExceptions.
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Java: IndexOutOfBoundsExceptions.



  1. #1
    invitedb2255b0

    Java: IndexOutOfBoundsExceptions.


    ------

    Bonjour, j'essai de faire un petit programme appelé "jeu de la vie" et je me heurte à une erreur à l'éxecution: Erreur de dépassement du tableau.

    Et la je comprend pas. J'ai relu tout mon code et j'ai pas trouver d'où ca pouvais provenir.

    Voici l'erreur:
    Code:
    ArrayIndexOutOfBoundsException: 50
    at Vie.testDeVie(Vie.java:31)
    at Vie.tourDeJeu(Vie.java:43)
    at Vie.main(Vie.java:85)
    
    Et voici le code en question:
    public static int testDeVie(boolean[][] b, int i, int j){
    	int vivants=0;
    	int iMin, iMax, jMin, jMax;
    	iMin = (i==0? i:i-1);
    	iMax = (i==(b.length-1)? i:i+1);
    	jMin = (j==0? j:j-1);
    	jMax = (j==(b[0].length-1)? j:j+1);
    	for (int k=iMin; k<=iMax; k++)
    	    for (int l=jMin; l<=jMax; l++)
    		if (b[k][l]) -------> ca c'est la ligne 31
    		    vivants++;
    	vivants = (b[i][j]? vivants--:vivants);
    	return vivants;
        }
    
    public static byte[][] tourDeJeu(boolean[][] b){
    	boolean[][] temp = new boolean[b.length][b[0].length];
    	temp = b;
    	byte[][] t = new byte[b.length][b[0].length];
    	for (int i=0; i<b.length; i++)
    	    for (int j=0; j<b[0].length; i++){
    		int n=testDeVie(b, i, j);  -----------> ca c'est la ligne 43
    		if (n==2)
    		    t[i][j] = 0;
    		else if (n==3){
    		    temp[i][j] = true;
    		    t[i][j] = 1;
    		}		    
    		else{
    		    temp[i][j] = false;
    		    t[i][j] = -1;
    		}
    	    }
    	b = temp;
    	return t;
        }
    
    public static void main(String[] args) throws InterruptedException{
    	int l=50, h=50;
    	boolean[][] jeu = initialisation(l,h);
    	Deug.startDrawings(10*l, 10*h);
    	initialisationGraphique(jeu);
    	while (true){
    	    afficherTour(tourDeJeu(jeu)); ----------------> l.85
    	    Thread.sleep(500);
    	}
        }
    Je ne pense pas que l'erreur viennent des autres fonction utiliser qui ne manipule pas réellement le tableau. Ce que je pige pas, c'est d'où viens le 50. Les inégalité sont pourtant bien strictes dans tous les for, et j'ai fait attention à bien mettre un "b.length-1" bref je vois pas là ...

    J'ai mis le programme dans une balise Code . C'est plus lisible.
    JPL, modérateur

    -----
    Dernière modification par JPL ; 11/12/2009 à 22h16.

  2. #2
    Stan_94

    Re : Java: IndexOutOfBoundsExceptions.

    Bonjour,
    en fait ce n'est pas bien compliquer mais il faut savoir que les tableaux commence par l'index 0 et non pas 1. Donc quand tu initialises un tableau de 50, l'index ne doit varier que de 0 à 49... Avec cette remarque tu va facilement corriger ton problème, n'est-ce pas ?

Discussions similaires

  1. java
    Par invite5dfb4918 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 15/11/2009, 16h17
  2. java
    Par inviteafd8fc22 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 18/05/2008, 07h07
  3. Java, java, java, where are you, there's a mission for you !
    Par invite1237a629 dans le forum Logiciel - Software - Open Source
    Réponses: 35
    Dernier message: 16/03/2008, 22h10
  4. Java et Xp
    Par weeman dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 30/09/2004, 13h25
Découvrez nos comparatifs produits sur l'informatique et les technologies.