[JAVA] Texte-> Mots-> ArrayList =>OutOfMe

Fermé
hyper - 1 déc. 2009 à 20:58
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 - 1 déc. 2009 à 21:07
Bonjour,

je fait appel à votre aide car je bloque sur une partide de code:

mon but: Extraire d'un fichier texte les mots qui le composent.
Placer ces mots dans un tableau.
(après : dans ce même tableau, y mettre le numéro de la ligne à laquelle on peut trouver ce mot.

Mon code:
----------------------------------------------------------
import java.util.*;
import java.io.*;


public class IndexElem {


public void main (String [] args) {

try{


//Creation du flux à partix d'un petit fichier txt de 3 lignes
BufferedReader lecteur = new BufferedReader (new FileReader ("Test.txt"));


//Creation du tableau de taille variable
ArrayList <String[]> tab = new ArrayList <String[]> ();
String ligne = lecteur.readLine ();


//Decompo des lignes en mots et insertion dans le ArrayList<String>
while (ligne != null) {

String [] littleTab = ligne.split (",");

tab.add (littleTab);
}

//Imprime notre ArrayList compose des mots du texte.
System.out.println (tab);}

catch(IOException e) {}
}
}
----------------------------------------------------------------------------------------------------------

->A la compilation, pas de problème.
-> A l'exécution, pour appliquer la méthode main à l'objet créé, java prend un temps monstruex (30-40s) pour finir sur un OutOfMemoryError en surlignant la ligne avec le split !?!?

Vous avez des idées de ce qui pourrait clocher ?
A voir également:

3 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
1 déc. 2009 à 21:00
while (ligne != null) {

String [] littleTab = ligne.split (",");

tab.add (littleTab);
}


ligne n'est jamais null, non ? Tu ajoutes des millions de fois la même chose il me semble... jusqu'à ce que tu n'ai plus de ram :D
0
toma_f_1 Messages postés 89 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 16 décembre 2009 7
1 déc. 2009 à 21:03
...en effet tu travaille toujours sur la même "ligne" donc forcément != null.

trouve le moyen de passer à la ligne suivante dans ton while. et par contre je pense pas qu'un string puisse être null. mais il peut être = "". mais cela ne va pas si par exemple ton texte contient un saut de ligne. il te faudrait une boucle du genre : "tant qu'on a pas atteint la fin du fichier" (end of file)
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
1 déc. 2009 à 21:07
en plus de se que Ms. Pacorabanix, a déjà dit ta pas besoin besoin d'une boucle While (ligne != null)
note que String [] littleTab = ligne.split (","); va mettre tout la ligne que ta lu dans un tableau String , dans se cas ta besoin de boucle sur se tableau pour ajouter les éléments dans la liste
0