Exception :ArrayOUtOfBoundsException

Résolu
ctere -  
 ctere -
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 19031 Statut Modérateur 3 020
 
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
ctere
 
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 19031 Statut Modérateur 3 020
 
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
ctere
 
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