oncle jules
Messages postés43Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention19 septembre 2005
-
15 août 2005 à 18:02
cs_sammie
Messages postés9Date d'inscriptionjeudi 18 août 2005StatutMembreDernière intervention22 août 2005
-
19 août 2005 à 14:26
Salut à tous
je suis débutant en java. Je parse ce fichier avec la classe Streamtokenizer et j'aimerais mettre comme délimiteur le caractère '-', comme ça lorsqu'il tombe sur '-' il passe au token suivant en sachant que le signe '-' fait partie de ce dernier.
J'ai vu qu'il existe une classe StringTokenizer qui prend en compte l'ajout de délimiteur dans son constructeur, mais je préfèrerais utiliser streamtokenizer.
Merci pour votre aide
oncle jules
Messages postés43Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention19 septembre 2005 18 août 2005 à 11:51
Avec le StringTokenizer ca va etre plus embêtant à gérer étant donné la nature du fichier à parser.
C'est un fichier avec plein de lignes composées chacunes de 3 chiffres genre x.xxxxxxxxxE-xx ou xxxxxxxxE+xx
Ces 3 chiffres sont séparés par un espace si celui qui suit est positif. Si celui qui suit est négatif, le signe '-' vient se coller au chiffre précédent.
Donc tu comprends, si j'utilises le StringTokenizer avec Le signe - comme délimiteur, il va me couper des chiffres en plein dedans ..... :/
C'est une succession de lignes composée pour chacune d'elles de 3 valeurs. Soit elles sont séparées par un espace, soit par un signe "moins" qui correspond au signe négatif de la valeur qui suit.
Je dois récupérer chacune de ces valeurs parce qu'il faut que je les réécrive dans un fichier. Mais je ne dois pas simplement faire un genre de copier-coller. Il faut que j'intervertisse les valeurs deux à deux.
Je prends l'exemple suivant : considérons les 6 lignes du dessus. Au final, je dois obtenir les 6 lignes suivantes:
Mon idée est de stocker les 6 valeurs contenues dans deux lignes dans un String pour simplifier l'écriture, et de faire une boucle jusqu'à la fin du flux. Travailler avec les indices semble la solution la plus simple. Je récupère les 6 valeurs avec StringTokenizer mais le problème vient des délimiteurs. Dans mon cas, l'espace et le signe "moins" sont des délimiteurs; mais le signe "moins" n'est pas seulement un délimiteur puisqu'il apparait également dans les exposants (exposants négatifs).
D'ou mon problème :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_sammie
Messages postés9Date d'inscriptionjeudi 18 août 2005StatutMembreDernière intervention22 août 2005 19 août 2005 à 14:26
Salut,
A priori, la classe ci-dessous fait ce que tu demandes. Y'a peut etre
des cas particuliers à gérer, notamment si ton nombre de lignes est
impair, ou qu'une ligne ne contient pas 3 nombres.
J'espère que ca t'aide,
Sammie.
public class Analyseur {
public String execute(String pParam) {
String resultat = null;
// Suppression des \n, pour obtenir une chaine complète sans retour à la ligne
String fichier = mettreAPlat(pParam);
// Analyse du fichier, et
récupération d'une liste de String, chaque string représentant un des
nombres du fichier initial
List lstNombres = analyser(fichier);
// Travail sur les nombres
précédemment récupérés. En l'occurence, on souhaite les intervertir.
List lstResultats = intervertir(lstNombres);
// On rajoute les "\n", pour
pouvoir générer le fichier avec autant de lignes qu'initialement.