Exception :ArrayOUtOfBoundsException

Résolu/Fermé
ctere - 21 mai 2014 à 22:15
 ctere - 21 mai 2014 à 22:59
Bonjour cela fait plusieurs jours que j'essais de résoudre ce problème mais en vain j'èspère que quelqu'un pourra m'aider
Je dois parcourir un tableau de caractères mais je me retrouve avec cette exception et je n'arrive pas à voir d'où cela peut provenir
	public static void afficher(String words) throws ArrayIndexOutOfBoundsException{
String str[];

str = words.split(" ");

String[] tab = new String[WebCrawler.getWordsResults().size()];
WebCrawler.getWordsResults().toArray(tab);


for (int i=0; i < words.length(); i++){

System.out.println(str[i]);

System.out.println(tab[i]);

}
}


public static void main(String[] args) throws IOException {

afficher("université de paris");

}

et l'erreur est
université
de
paris
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at searchEngine.SearchByKeywords.afficher(SearchByKeywords.java:76)
at searchEngine.SearchByKeywords.main(SearchByKeywords.java:98)
Cela affiche quand même l'execution mais avec l;exception

2 réponses

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
21 mai 2014 à 22:28
Bonsoir,

J'ai réduit le code au minimum pour que tu comprennes mieux ton erreur :

public class Test
{
    public static void main(String[] args)
    {
        String words = "Hello World !";
        
        String[] str = words.split(" ");
        
        for (int i = 0; i < words.length(); i++)
            System.out.println(str[i]);
    }
}
0
Bonsoir, merci de la réponse rapide, mais je ne comprends pas mieux avec ton exemple
parce que ça fait des heures que je suis dessus, et j'ai fais tellement de modification sans reussir à régler ce problème que je ne vois toujours pas
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
21 mai 2014 à 22:49
Le problème c'est que
words.length()
est le nombre de caractères dans la chaîne
words
or toi ce que tu affiches ce ne sont pas les caractères, mais les mots
str[i]
mais il y a moins de mots à afficher qu'il n'y a de caractères dans la chaîne.

Dans l'exemple,
words.length()
vaut 13, mais il n'y a que 3 mots à afficher ("Hello", "World" et "!") donc forcément dès le quatrième mot ça plante...
0
merci Beaucoup !!! =)
En effet j'ai donc remplacé words.lenght() par str.lenght et cela fonctionne très bien !

merci beaucoup, bonne soirée
0