[JAVA] Texte-> Mots-> ArrayList =>OutOfMe
hyper
-
nobie-cs Messages postés 157 Statut Membre -
nobie-cs Messages postés 157 Statut Membre -
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 ?
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:
- [JAVA] Texte-> Mots-> ArrayList =>OutOfMe
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
3 réponses
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
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
...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)
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)