Boucle et affichage JAVA

Bonjour,
J'ai un souci concernant mon oligo.
En effet
*j'ai un message d'erreur : java.lang.ArrayIndexOutOfBoundsException: 3
(cela concerne la taille de ma colonne mais je ne vois pas ou est l'erreur)
*je n'arrive pas à afficher ma grille en un seul bloc (j'ai les lignes qui s'affiche puis je doit cliquer sur OK pour que le contenu d'une case s'affiche et ainsi de suite)

je voudrais
1 2 3
---------------
1 | -| - | - |
---------------
2 | -| - | - |
---------------
3 | -| - | - |

Voiçi mon algo

import javax.swing.JOptionPane;
import static java.lang.System.*;
import java.util.Scanner;

public class essai{
public static void main(String[] args){
char d = 'X';
char e = 'O';
char c = '-';

//déclaration d'un tableau de chaine de caractère
char[][] grille = new char[3][3];
// créer un tableau rempli du caractère '-'
for(int i=0; i<grille.length; i++){
for(int j=0; j<grille[0].length;j++){
grille[i][j] = c;
}
}
}
static void affichergrille(char [][] t){

JOptionPane.showMessageDialog
(null,
"1\t\t\t 2\t\t\t 3\t\t\t \n ------------\n",
"Tic Tac Toe",JOptionPane.INFORMATION_MESSAGE);

for (int i=1; i<=t.length; i++){//on affiche les lignes
//System.out.println (barre);
JOptionPane.showMessageDialog
(null,
i+" | "+" | "+" | "+" | ",
"Tic Tac Toe",JOptionPane.INFORMATION_MESSAGE);

for(int j=1;j<=t[1].length;j++) //on affiche les colonnes

{
//System.out.print(" "+t[i][j]+" "); //on laisse un espace entre chaques cotés du caractère pour plus de lisibilité
//System.out.print("|");
JOptionPane.showMessageDialog
(null,
" "+t[i][j],
"Tic Tac Toe",JOptionPane.INFORMATION_MESSAGE);
}

}
}
Configuration: Windows XP
Firefox 3.0.16

5 réponses

  1. Le forum "Programmation" sera plus approprié.
    0
    1. Bonsoir Jedwed123,

      Pour la question 2, cela me semble normal que ton affichage soit interrompu par une boite de dialogue puisque tu as programmé cela :
      JOptionPane.showMessageDialog(...);
      0
      1. Contributeur
        Je confirme :)

        En revanche est-ce qu'il y a là tout le code?

        Et pour le OutOfBound, non je dirais qu'il a raison, il te dit 3, or un tableau commence à 0 donc 0-1-2 et si tu cherches à faire un tab[3] tu vas avoir des problèmes ...
        0
        1. L'erreur pour le Out Of Bound est sur la ligne

          for(int j=1;j<=t[1].length;j++) //on affiche les colonnes 


          Les indices comme,cent de 0 à lenght - 1.

          et JOptionPane dans une boucle c'est pas correct et donnera pas le résultat attendu, utilise simplement le System.out.print

          Bon Courage
          0
          1. Salut,

            Et puis attention: tu déclares ton tableau "grille" et ensuite tu le traites sous le nom "t" et en plus dans des boucles:

            for (int i=1; i<=t.length; i++){//on affiche les lignes 

            et:

            for(int j=1;j<=t[1].length;j++) //on affiche les colonnes  (et ici pourquoi <=t[1].length ?)


            donc en ignorant le 1er élément, et jusqu'à la longueur 3 (<=t.length)

            Ce qui montre que le bout de code que tu nous donnes ne peut correspondre au code que tu utilises...

            Cordialement,

            Dan
            0