Java manipulation fichier
Jne
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Debutant en java j'ai a disposition un fichier qui contient du morse dont voici un exemple de contenu :
.- | -... | -.-. | -..
Je cherche à stocker ce contenu dans un tableau grâce à un délimiteur "|" mais j'avoue ne pas avoir compris comment faire apparemment, voici le code (l'erreur étant au niveau du code en gras):
Merci d'avance et bonne année :)
Debutant en java j'ai a disposition un fichier qui contient du morse dont voici un exemple de contenu :
.- | -... | -.-. | -..
Je cherche à stocker ce contenu dans un tableau grâce à un délimiteur "|" mais j'avoue ne pas avoir compris comment faire apparemment, voici le code (l'erreur étant au niveau du code en gras):
import java.io.*;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Projetmorse {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
String []morse = new String[100]; //tableau qui stockera le contenu du fichier
int i = 0; //pour parcourir le tableau
BufferedReader lect;
String tmp = "";
String delimiteur = "|";
try
{
lect = new BufferedReader(new FileReader("morse.txt"));
while (lect.ready() ==true)
{
tmp = tmp + lect.readLine();
morse[i] = tmp.split(delimiteur);
i++;
}
}
catch (NullPointerException a)
{
System.out.println("Erreur : pointeur null");
}
catch (IOException a)
{
System.out.println("Problème d'IO");
}
System.out.println(morse);
}
}
Merci d'avance et bonne année :)
A voir également:
- Java manipulation fichier
- Jeux java itel - Télécharger - Jeux vidéo
- Fichier bin - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Fichier epub - Guide
- Fichier rar - Guide
1 réponse
split renvoie un tableau String[], or morse[i] est un String, d'où l'erreur.
Il faudrait plutôt faire quelque chose comme ça :
Mais perso, je te déconseille de continuer avec des tableaux, l'utilisation de listes est plus adapté car tu ne connais pas à l'avance la taille de ton tableau (là tu as mis 100, mais c'est peut-être 10 ou 1000 !!!)
De plus je ne comprends pas pourquoi tu fais "tmp = tmp +", une fois que la première ligne est traitée tu n'as pas besoin de la retraiter une deuxième fois avec la deuxième ligne, ni une troisième fois avec la troisième ligne, etc.
ATTENTION !
La méthode split prend en paramètre une expression régulière, et "|" ne fonctionne pas, car | est un caractère spécial utilisé dans ces expressions, il faut donc l'échapper avec un \ dans l'expression régulière (qui se double dans le String)
Il faudrait plutôt faire quelque chose comme ça :
String[] split = tmp.split(delimiteur);
for (int j=0; j<split.length; j++)
morse[i++] = split[j];
Mais perso, je te déconseille de continuer avec des tableaux, l'utilisation de listes est plus adapté car tu ne connais pas à l'avance la taille de ton tableau (là tu as mis 100, mais c'est peut-être 10 ou 1000 !!!)
LinkedList<String> liste = new LinkedList<String>(); liste.add(split[j]);
De plus je ne comprends pas pourquoi tu fais "tmp = tmp +", une fois que la première ligne est traitée tu n'as pas besoin de la retraiter une deuxième fois avec la deuxième ligne, ni une troisième fois avec la troisième ligne, etc.
ATTENTION !
La méthode split prend en paramètre une expression régulière, et "|" ne fonctionne pas, car | est un caractère spécial utilisé dans ces expressions, il faut donc l'échapper avec un \ dans l'expression régulière (qui se double dans le String)
String delimiteur = "\\|";Dernière remarque (au moins pour l'instant), tu ne peux pas faire directement System.out.println(morse); car morse est un tableau, tu peux en revanche faire System.out.println(Arrays.toString(morse)); mais si tu remplaces ce tableau par une liste tu n'auras plus ce problème...La confiance n'exclut pas le contrôle