bettysatte
Messages postés58Date d'inscriptionmercredi 3 juin 2009StatutMembreDernière intervention 2 juillet 2009
-
9 juin 2009 à 17:32
cs_MoH008
Messages postés238Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention29 septembre 2011
-
4 juil. 2009 à 00:40
bonjour, voilà mon pb:
je dois créer une matrice de traffic avec java: cette matrice calcule la somme de duréé de l'appel entre l'appelant et l'appelé.j'ai des fichiers text dans lesquels il y a les différents données sur l'appelant et l'appelé et la durée de leurs appels, c pourquoi dans un premier temps, faudra que j'extrait les données dont g besoin et les mettre dans cette matrice puis cette matrice doit calculer la durée entre l'appelant et l'appelé.
merci de bien vouloir m'aider, c urgent.
cs_neone
Messages postés96Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention 7 mars 2011 12 juin 2009 à 10:17
Bonjour,
tu peux t'inspirer de ce code:
//ta ligne est dans lgne
String lgne="salut;ça;va;bien";
//compose ligne contient les données qu'on veut extraire
String composligne=new String[4];
//tu utilise la class StringTokenizer qui permet de faire la décomposition selon ";"
bettysatte
Messages postés58Date d'inscriptionmercredi 3 juin 2009StatutMembreDernière intervention 2 juillet 2009 12 juin 2009 à 11:06
bonjour,
merci beaucoup pour votre aide.
s'il vous plait , pour cette boucle je la répète selon le nombre des point virgule que j'ai entre mes champs?
while(tok.hasMoreTokens())
{
composligne[n]=tok2.nextToken();
n++;
}
je veux dire j'ai par exemple:
String lgne="N_ORIG;ID_SWITCH_ORIG;N_DEST;TYPE_DEST ";
selon le nombre des virgules ici , je refais ma boucle?
et pour :
composligne[n]=tok2.nextToken();
pourquoi tok2 et non pas tok?
voilà ce que j'ai fait mais ça génère des erreurs, je crois que j'ai loupé quelque chose, ceux que j'ai mis en rouge sont souligné et il n'y aucune suggestion en eclipse:
import java.io.*;
import java.util.StringTokenizer;
public class CatFichier {
public static void main(String[] args) throws IOException{
String lgne="N_ORIG;ID_SWITCH_ORIG;N_DEST;TYPE_DEST" ;
String composligne= new String [4];
StringTokenizer tok=new StringTokenizer(lgne,";");
int n=0;
while(tok.hasMoreTokens())
{
cs_neone
Messages postés96Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention 7 mars 2011 12 juin 2009 à 11:15
ok.
il faut rajouter le package. tu peux voir le lien suivant http://www.java2s.com/Code/JavaAPI/java.lang/StringTokenizer.htm. sinon pour le nombre de fois que tu dois répéter ben c'est le nombre de tes données
"sa;va;bien" c'est 3 fois.
Boncourage tiens moi au jus.
salut
bettysatte
Messages postés58Date d'inscriptionmercredi 3 juin 2009StatutMembreDernière intervention 2 juillet 2009 12 juin 2009 à 12:24
salut,
voilà le code que j'ai fait, mais il genère tjs une erreurs, en fait je commence à me perdre, ce dont j'ai besoin c'est d'extraire juste les champs dont g besoin et les mettre dans un autre fichiers, en tt cas voilà le code :
import java.io.*;
import java.util.StringTokenizer;
public class CatFichier {
public static void main(String [] args) throws IOException {
BufferedReader fichier = new BufferedReader(new FileReader("E://Documents and Settings//Ibtissame//Mes documents/Mes fichiers reçus//CAA.txt"));
String str;
str = fichier.readLine( );
while (str != null){
String tab[]=str.split(";");
System.out.println(tab[2]);
System.out.println(tab[0]);
System.out.println(tab[6]);
str = fichier.readLine( );
}
String lgne="N_ORIG;ID_SWITCH_ORIG;N_DEST;TYPE_DEST" ;
String []composligne= new String [4];
StringTokenizer tok=new StringTokenizer(lgne,";");
int n=0;
while(tok.hasMoreTokens())
{
cs_neone
Messages postés96Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention 7 mars 2011 12 juin 2009 à 13:44
Ben normal ta dépassé la dimension de ton tableau. le code que je t'ai passé devait remplacer la partie:
while (str != null){
String tab[]=str.split(";");
System.out.println(tab[2]);
System.out.println(tab[0]);
System.out.println(tab[6]);
str = fichier.readLine( );
}
Donc on se concentre un peu. tu arrive maint a extraire tes données du fichier.
tu dois ouvrir un fichier de sortie . dans lequel tu veux écrire tes données . ben tu lis une ligne du fichier de l'entrée , tu la traite et t'écris dans le fichier de sortie ce que tu désire. le plus raisonable c'est de créer une liste avec tete et quee comme ça tu stok dedans tes données traités. aprés tu ouvre un fichier pour écrire dedans. voila l'algorithme.
Début:
ouvrir fichier d'entrée
lire ligne par ligne et extraire les données voulus
les stoké dans une liste
fermeture du fichier d'entrée
ouverture du fichier de sortie
parcourir ta liste et écrire ce que tu désire dans le fichier out
fermer le fichier sortie
boncourage
cs_MoH008
Messages postés238Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention29 septembre 20111 12 juin 2009 à 14:53
Salut !
Il y a eu de la progression à ce que je vois. c'est bien.
Pour écrire des données va voir les outputstream (bufferedoutputstream, fileoutputstream...)
The possible meet the impossible to become the possimpible !!
bettysatte
Messages postés58Date d'inscriptionmercredi 3 juin 2009StatutMembreDernière intervention 2 juillet 2009 12 juin 2009 à 15:43
salut,
merci c'est grâce à vous que j'en suis là, en fait pour le moment je récupère les champs que je veux mais dans la même colonne, j'arrive toujours pas à les récuperer chacune dans une colonne, j'ai utilisé ceci:
StringTokenizer st = new StringTokenizer("N_ORIG;N_DEST;ID_SWITCH_DEST;D_SEBCOM;durée;INCTRUNKLD;OUTGTRUNKLD
",;
while (st.hasMoreTokens())
System.out.println(st.nextToken());
}
mais ça me donne juste ce qui est en stringTokenizer, chacune en ligne donc je crois que c'est pas ce qu'il faut faire.
donc ma question, qu'est ce qu'il manque à ce code, pour qu'il affiche chaque champs voulu en une colonne:
BufferedReader fichier = new BufferedReader(new FileReader("E://Documents and Settings//Ibtissame//Mes documents/Mes fichiers reçus//CAA.txt"));
String str;
str = fichier.readLine( );
while (str != null){
String tab[]=str.split(";");
System.out.println(tab[2]);
System.out.println(tab[0]);
System.out.println(tab[6]);
bettysatte
Messages postés58Date d'inscriptionmercredi 3 juin 2009StatutMembreDernière intervention 2 juillet 2009 12 juin 2009 à 15:47
en fait vous m'avez dit que c parce que j'ai dépassé la limite de mon tableau que j'ai cette erreur:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at CatFichier.main(CatFichier.java:14)
cs_MoH008
Messages postés238Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention29 septembre 20111 12 juin 2009 à 15:52
Si ce que tu entends pas une colonne c'est sa :
tab[0]
tab[2]
tab[6]
ce n'est pas grave c'est juste un affichage mais si tu y tiens vraiment fait comme ça:
System.out.print(tab[2]+"\t"+tab[0]+"\t"+tab[6]+"\n");
au lieu de
System.out.println(tab[2]);
System.out.println(tab[0]);
System.out.println(tab[6]);
explication : "\t" représente la tabulation et "\n" c'est le retour à la ligne
The possible meet the impossible to become the possimpible !!
cs_MoH008
Messages postés238Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention29 septembre 20111 12 juin 2009 à 15:57
Alors il nous faudrait la ligne 14 de ton code puisque l'erreur se trouve à cette ligne !
mais comme je t'ai dis c'est surement parce que à un moment ou à un autre le tableau tab ne peut pas accéder aux éléments tab[2] - tab[0] - tab[6]puisque tab ne contient pas autant d'éléments.
Quand tu effectues ton affichages, vérifie la taille de ton tableau avec tab.size() il me semble
The possible meet the impossible to become the possimpible !!
bettysatte
Messages postés58Date d'inscriptionmercredi 3 juin 2009StatutMembreDernière intervention 2 juillet 2009 12 juin 2009 à 16:06
salut ; je viens de lire vos suggestions,juste après avoir posté, ce que j'ai fait, et il s'avère que s'est la même chose. , merci moh008, en fait pour eviter l'erreur, est ce que je dois definir les dimensions de mon tableau?
comment faire s'il vous plait?
la ligne 13 est ceci:
System.out.println(tab[0] +" "+ tab[2]);
bettysatte
Messages postés58Date d'inscriptionmercredi 3 juin 2009StatutMembreDernière intervention 2 juillet 2009 12 juin 2009 à 16:33
salut;
c'est bon le problème est résolu, en réalité mon fichier était format excel, et je l'ai converti en fichier text, et c'était là le problème, je viens de le convertir au format csv, et donc il donne plus d'erreur:
merci encore les amis pour votre aide, vous êtes super.
maintenant pour l'étape suivante:
il faudra quand je récupère le numéro appelant et le numéro appelé de tester dans quelle plage se trouve chaque numéro pour determiner son URA., et cela de ce fichier:
Ura ;seuil_min ;seuil_max;
UR001 ;028210000 ;028233999;
UR002 ;028292000 ;028292999;
mobile IAM ;010330000 ;078999999;
internationnal ;00000 ;022920999;
meditel ;020000000 ;082039999;
wana ;038000000 ;088199999;
par exemple :
si id_ORG<= 028210000 et id_ORG>=028233999
alors id_ORG= UR001
id_DEST<= 028210000 et id_DEST>=028233999
alors id_DEST= UR001
ect.....
comment traduire cela? sachant qu'il faudra faire cela d'as qu'il récupère la valeur de l'appelant et l'appelé.
cs_MoH008
Messages postés238Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention29 septembre 20111 12 juin 2009 à 16:40
Eh bien déjà il te faut stocker tes données quelque part !!!
Lire ton fichier contenant les renseignements les ura et plages.
Tu devras juste insérer ton traitement lorsque tu récupéreras tes informations de ton fichier CAA.
La façon de faire est dans un de mes postes précédent !!
The possible meet the impossible to become the possimpible !!