Extraire des données dans une matrice

bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009 - 9 juin 2009 à 17:32
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 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.

109 réponses

bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
19 juin 2009 à 11:21
bonjour,
j'ai réglé le problème, mais ça génère des erreurs, en fin je résume:
j'ai trois classe: catfichier, ura et centre.
dans chacune des classes URA et centre j'ai une méthode approprié à chacune, et c'est dans ma classe catfichier où je fais appel à ces méthodes. et voilà le code de catfichier:

import java.io.*;
import java.util.StringTokenizer;
public class CatFichier  {
    public static void main(String [] args) throws IOException  {
   
       
BufferedReader fichier = new BufferedReader(new FileReader("D:// fichier//CAA2.CSV"));
String str;

//centre.getCentre( "Switch_orig");
str = fichier.readLine( );
    while (str != null){
        String tab1[]=str.split(";");
       
        int type_dest;
        String ura_dest;
        String ura_orig;
   
       
   
        ura_dest= URA.getUraOrig(tab1[2]);//  l'appel de cette méthode consite à  faire le test sur le numéro dans quel plage se trouve et lui attribué son ura correspondant.
      
       
        ura_orig= URA.getUraOrig(tab1[0]);// de meme pour celle ci
       
   
        System.out.println(ura_orig +" ;    "+ ura_dest+";"+tab1[6]);
        str = fichier.readLine( );
       
   
        }
    while (str != null){
        String tab1[]=str.split(";");
       
       
        String centrecentre;
       
        centrecentre= centre.getCentreURA(tab1[1]); // je fais appel à ma deusième méthode, cette méthode consiste à attribuer le centre correspondant une fois l'ura trouvé.
        System.out.println(centrecentre);
        str = fichier.readLine( );
       
       
       
       
    }
    }}

En tout comment faire appel à deux méthode différents dans une meme classe.

merci encore pour vodre aide précieuse.
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
19 juin 2009 à 11:33
en fait le problème dans le code au dessous, c qu'il ne prend en considération que la première méthode la seconde , il ne l'exécute pas. svp aidez moi, shui en retard par rapport au délai au quel je dois rendre mon travail. merci bcp.
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
20 juin 2009 à 04:17
Salut,
excuse moi mes réponses sont assez longues mais je suis assez occupé en fait.
Bref, quand tu crées une classe, pour l'utiliser tu dois instancier un objet de cette classe
ex: URA ura = new URA( )
et après c'est ura.ma_methode(args) pour l'utilisation.

Ensuite à chaque fois tu relis le fichier, A EVITER au maximum puisque tu augmentes le temps de traitement....

En ce qui concerne ton appel à ta deuxième méthode, c'est normal qu'elle ne fonctionne pas puisque tu sors de ton premier while seulement quand tu as fini de lire le fichier c'est à dire quand ta variable 'str' est null !!

Etant à null elle ne rempli pas la condition pour ton second while donc tu ne peux pas rentrer dans la boucle.

The possible meet the impossible to become the possimpible !!
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
21 juin 2009 à 20:32
bonjour,
merci beaucoup pour ton aide,
mon problème est tjs le même, quand j'exécute  y'a juste le premier while qui s'éxécute; l'autre while est ignoré, et quand j'ai enlevé  la lecture du fichier entre les deux while, et que je l'éxécute, il fait k repeter une ligne.
merci encore et dsl pour le derrangement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
21 juin 2009 à 22:32
Salut,
essaie plutôt quelque chose dans ce genre :

import java.io.*;
import java.util.StringTokenizer;
public class CatFichier  {
    public static void main(String [] args) throws IOException  {
   
       
BufferedReader fichier = new BufferedReader(new FileReader("D:// fichier//CAA2.CSV"));
String str;
int type_dest;
String ura_dest;
String ura_orig;
String centrecentre;

str = fichier.readLine( );
    while (str != null){
        String tab1[]=str.split(";");
        
        ura_dest= URA.getUraOrig(tab1[2]);       
        
        ura_orig= URA.getUraOrig(tab1[0]);        
            
        centrecentre = centre.getCentreURA(tab1[1]);       
        System.out.println(centrecentre);

        System.out.println(ura_orig +" ;    "+ ura_dest+";"+tab1[6]);
        str = fichier.readLine( );
       
   
        }
    
    }}

Je me suis basé sur ton code sans trop le changer.
Une seule boucle dans laquelle tu exécutes toutes tes méthodes d'un coup

The possible meet the impossible to become the possimpible !!
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
21 juin 2009 à 23:05
merci, mais ça genère la meme chose:
il exécute la première et pour la deusième il retourne erreur.
j'arrive tjs pas à detecter pourquoi.
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
21 juin 2009 à 23:18
Donne moi le code de ta fonction getcentreura ! et l'erreur que retourné
vérifie les valeurs de tab

The possible meet the impossible to become the possimpible !!
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
21 juin 2009 à 23:38
Le voilà, merci bcp:










import




java.io.BufferedReader;



import




java.io.FileReader;



import




java.io.IOException;

 




public








class

centre {



private

String

URA
;



private

String

Centre
;



public

String getURA() {



return




URA
;}



public





void

setURA(String ura) {


URA
= ura;}



public

String getCentre() {



return




Centre
;}



public





void

setCentre(String centre) {


Centre
= centre;}



public





static

String getCentreURA( String Switch_orig ){



try


{





BufferedReader fichier =





new

BufferedReader(


new

FileReader(

"D://centre.CSV"
));String str;

 




int




i = 0;

str = fichier.readLine();

String ura;

String centre;




while




(str !=


null

) {String tab2[] = str.split(


";"
);



if




((tab2[0] !=


null

) & (tab2[1] !=


null

) ) {

ura =(tab2[0]);



if

((Switch_orig)==ura)

{




return




tab2[1];

}

}

str = fichier.readLine();

}

 

}




catch




(IOException e) {


//




TODO

Auto-generated catch block

e.printStackTrace();


}








return




"erreur"
;}

 

 

 

 



public

centre() {



super

();


//

TODO

Auto-generated constructor stub

}


}





 
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
21 juin 2009 à 23:48
Ta méthode est bonne, tu devrais éviter de mettre static !!
A chaque appel de fonction, tu parcours ton fichier, c'est une perte de temps et d'optimisation, je te l'ai déjà fait remarqué.
Au lieu de retourné "erreur", retourne plutôt "e.toString() tu auras plus de détails sur l'erreur ....

The possible meet the impossible to become the possimpible !!
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
21 juin 2009 à 23:49
juste une petit clarification , si ça peut aider:
 dans mon fichier centre, il ya un code ura et le centre correspondant.
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
22 juin 2009 à 00:03
comment je peux éviter static? qu'est ce que je peux faire.
j'ai retourner e.toString , mais ça n'a rien donné, au lieu de retourner erreur , elle retourne e.toString sans trop de détail.

la première méthode , teste le numéro dans quel plage se trouve et me donne son ura et ça marche, pour la seconde, elle doit me donnez le centre à l'ura correspondant; sachant que dans mon fichier chaque ura lui correspond un centre.

désolé pour le dérangement, et merci encore.
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
22 juin 2009 à 00:14
Si tu avais fait comme je t'avais conseillé !!!!!
Extraire toutes tes données et les rassembler dans une matrice, tu n'aurais pas ce soucis...là tu dois faire des tas de recherches à chaque fois dans tes fichiers au lieu de ta matrice.

The possible meet the impossible to become the possimpible !!
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
22 juin 2009 à 10:25
bonjour,


c'est parce que j'ai pas su comment faire, sinon j'aurai volentié suivie votre conseil, maintenant je dois faire avec ce que j'ai fait parce que j'ai pas le temps de tout changer pour le moment, aprés jvais tout revoir à tete reposé.

pourquoi il prend pas en considération la deusième méthode et me retourne juste l'erreur?
merci pour votre aide.
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
22 juin 2009 à 16:18
Salut,
s'il te retourne erreur, c'est que d'après ton code, une exception a été levée, maintenant il faudrait voir à quoi ressemble le message d'erreur pour pouvoir résoudre ton problème

The possible meet the impossible to become the possimpible !!
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
23 juin 2009 à 10:57
bonjour,
en fait le problème résidait dans le code de la classe centre.
au lieu de faire :
if
((Switch_orig)==ura)

fallait faire:
if((Switch_orig.equals(ura)))

maintenant voici mon problème:

je ne veux que cette boucle s'éxecute, seulement si le type destination est 01 càd national:

while (str != null){
 
        String tab1[]=str.split(";");
    
       
        int type_dest;
        String ura_dest;
        String ura_orig;
        String centrecentre;
   
        ura_dest= URA.getUraOrig(tab1[2]);
        ura_orig= URA.getUraOrig(tab1[0]);
        //System.out.println( ura_orig);
        centrecentre= centre.getCentreURA(ura_orig);
       
       
   
       
       
       
        System.out.println(ura_orig +" ;    "+ ura_dest+"  ;"+centrecentre+"  ;"+tab1[6]+";"+tab1[3]);
        str = fichier.readLine( ); }

mais sinon si le type destination est international càd 02, alors j'ai pas besoin d'avoir le centre.

autrement dit j'ai besoin qu'il détecte en premier le type destination avant d'exécuter ma boucle.
 poser par exemple:
int a=1;
int b= 2;
et dire:
si (Integer.parseInt(tab1[3])== a) alors la boucle s'éxécute
sinon  j'aurai une autre boucle à exécuter.

merci encore de bien vouloir m'aider, j'ai pas su formuler mon idée en java.
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
23 juin 2009 à 13:18
bonjour,
voilà ce que j'ai fait:

import java.io.*;
import java.util.*;
public class CatFichier  {
    public static void main(String [] args) throws IOException  {

   
       
BufferedReader fichier = new BufferedReader(new FileReader("D://MAroc telecom//CAA2.CSV"));
String str;

str = fichier.readLine( );
    while (str != null){
        String tab1[]=str.split(";");
        int a=1;
        int b=2;

        int type_dest;
        String ura_dest;
        String ura_orig;
        String centrecentre;
        if(Integer.parseInt(tab1[3])== a){
       
   
       
        ura_dest= URA.getUraOrig(tab1[2]);
        ura_orig= URA.getUraOrig(tab1[0]);
        centrecentre= centre.getCentreURA(ura_orig);
       
       
        System.out.println(ura_orig +" ;    "+ ura_dest+"  ;"+centrecentre+"  ;"+tab1[6]+";"+tab1[3]);
        str = fichier.readLine( );
        }
       
        else if (Integer.parseInt(tab1[3])== b){
            ura_dest= URA.getUraOrig(tab1[2]);
            ura_orig= URA.getUraOrig(tab1[0]);
           
            System.out.println(ura_orig +" ;    "+ ura_dest+"  ;"+tab1[6]+";"+tab1[3]);
            str = fichier.readLine( );
        }
       
       
       
   
    }    }}
   
   
mais le problème quand il s'agit d'un numéro international, il me retourne erreur comme ce ci:
UR514 ;    Erreur  ;42;2

sachant que dans mon fichier URA, j'ai ceci:
seuil min      seuil max              URA
0                  22920999         international
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
23 juin 2009 à 22:39
Bonsoir,
en fait le problème résidait dans le fait que la plage de l'international n'est pas approprié aux numéros qui existent.

en fait j'aimerai savoir s'il existe un moyen de ne lire qu'une partie d'un numéro.
par exemple si j'ai  0033494965233, comment ne lire que la partie après le négatif çàd ne lire que: 494965233
merci pour votre aide.
<col style=\"width: 101pt;\" width=\"135\" />
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
24 juin 2009 à 04:13
Salut,
il me semble qu'il y a une méthode substring ou quelque chose dans le genre

The possible meet the impossible to become the possimpible !!
0
bettysatte Messages postés 58 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
26 juin 2009 à 10:48
bonjour,
le problème avec substring c'est qu'elle ne fonctionne qu'on je lui attribue directement un numéro, par exemple cela:
 String C = "003456784321.";
                String D = C.substring(5);
                System.out.println(D);

ça me donne cela: 56784321.

voici mon problème:

je voudrais que cela se fasse sur tous les numéros international, çàd quand je fais appel à cela:

int b=2;
else if (Integer.parseInt(tab1[3])== b  ){
            ura_dest= URA.getUraOrig(tab1[2]);
            ura_orig= URA.getUraOrig(tab1[0]);  
            System.out.println(ura_orig +" ;    "+ ura_dest+"  ;"+tab1[6]+";"+tab1[3]);
            str = fichier.readLine( );

ce code veut dire, que si le type destination est internationnal  çàd tab1[3]=b, il fait le test de sa plage pour voir s'il existe vraiment dans une plage international, à ce moment il faudra qu'il extrait le négatif pour faire le test. çàd si le numéro est : 0034567328921, il doit ne prendre en considération que "567328921",  donc je sait pas comment appliquer le substring sur une méthode.

s'il vous plait aidez moi, faut que je résout cela aujourd'hui.
merci pour votre aide.
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
26 juin 2009 à 16:57
Salut,
Qu'est ce que tu entends pas appliqué substring à une méthode ??
tu peux appliquer substring à la valeur retournée par une méthode mais à une méthode

The possible meet the impossible to become the possimpible !!
0
Rejoignez-nous