Java manipulation fichier

Fermé
Jne - 5 janv. 2013 à 11:01
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 5 janv. 2013 à 11:23
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):

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:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 5/01/2013 à 11:28
split renvoie un tableau String[], or morse[i] est un String, d'où l'erreur.

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
0