Bonjour,
Je dois effectuer un programme pour savoir si des mots/phrases sont des palindromes. Quand je lance mon programme j'ai l'erreur : "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5" qui s'affiche, et après plusieurs tests je crois que le tableau ne se remplie pas et je ne comprends pas pourquoi.

Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
import static java.lang.System.*;
 
public class Palindrome{
 
	char [] pal;
 
	public Palindrome (int n){
		pal = new char [n];
		for (int i = 0; i<=n-1; i++){
			pal[i] = utils.lireChar("Caractere ?");
		}
	}
 
	public Palindrome (char [] p){
		pal = p;
	}
 
	public boolean palindrome () {
		int i = 0;
		boolean erreur = false;
			for(i = 0; i<=(tab.length-1)/2; i++){
				if (tab[i] != tab[tab.length-1-i]){
					erreur = true;
				}
			}		
			return (erreur);
	}
 
	public void afficher (){
		out.println("Le mot/phrase est: ");
		for (int i=0; i<=pal.length; i++){
			out.print(pal[i]);
		}
		out.println("");
	}
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class utils
{
    public static String lireChaine(String question) {
        InputStreamReader ir = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(ir);
 
        System.out.print(question);
        System.out.flush();    // vide le flot
        String reponse="";
        try  {
            reponse = br.readLine();;
        } catch (IOException ioe) {
            System.out.println("Erreur de saisie ...");
        }
        return reponse;
    }
 
    public static int lireEntier(String question) {
        return Integer.parseInt(lireChaine(question));
    }
 
    public static char lireChar(String question) {
        return String.valueOf(lireChaine(question)).charAt(0);
    }
 
    public static double lireReel(String question) {
        return Double.valueOf(lireChaine(question)).doubleValue();
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import static java.lang.System.*;
 
public class test {
 
	public static void main(String[] args) {
 
		Palindrome kayak;
		kayak = new Palindrome (5);
		out.println(" ");
		kayak.afficher();
 
		if(kayak.palindrome()){
			out.println("C'est un palindrome.");
		}
		else{
			out.println("Ce n'est pas un palindrome.");
		}
 
	}
 
}
Merci d'avance pour votre aide.