Entrer des données dans un tableau initialement vide

Entrer des données dans un tableau initialement vide - Java - Programmation

Marsh Posté le 11-12-2009 à 18:43:12    

Bonsoir !
Je suis tout nouveau et j'ai du mal en programmation java.
Je vous expose mon problème. J'ai un fichier texte qui contient sur chaque ligne une date de commande/un numéro de commande/un numéro de client et le montant de la commande effectué. Je lis le fichier avec la méthode BufferedReader et je décompose chaque ligne avec la méthode "tokenizer". Jusque là j'y arrive.
Je veux calculer le chiffre d'affaire par client. Autrement dit je crée une classe client avec pour attribut son numéro client et son chiffre d'affaire. Je crée un tableau de client (de grandeur fixé). Je dois parcourir le fichier texte et regarder si le numéro client est deja dans mon tableau de client. Auquel cas j'ajoute le montant de la commande à son chiffre d'affaire initialement présent dans le tableau. Et s'il n'y est pas, je l'inscris dans le tableau et j'initialise son chiffre d'affaire.  Compliqué, j'ai moi même du mal à me relire. Le problème c'est que le tableau de client est initialement vide  
Bref, si vous voulez bien jeter un coup d'oeil à ce que j'ai fait et me donner des pistes pour continuer :
// ... //
 
Client[] Tabclient = new Client[100];
 
 
//Les variables numcli et montant sont récupérés du fichier texte avec la méthode Tok.nextToken(); //
 
numcli=Tabclient[0].numero_client;  
montant=Tabclient[0].chiffre_affaire;
for(int i=0; i<100; ++i)
    if(numcli.equals(Tabclient[i].numero_client)) {
        Tabclient[i].chiffre_affaire=Tabclient[i].chiffre_affaire + montant;}
    else { numcli=Tabclient[i].numero_client;
    Tabclient[i].chiffre_affaire = montant; }
 
Merci de votre aide

Reply

Marsh Posté le 11-12-2009 à 18:43:12   

Reply

Marsh Posté le 12-12-2009 à 18:50:18    

Déjà, c'est plus facile en utilisant une ArrayList plutot qu'une array ;-)
 
Et la ca doit planter parce que Tabclient[0] == null.
 
Donc teste ca en premier lieu, si c'est null, tu dois faire un truc du genre Tabclient[i] = new Client(<tes arguments> )
 
Vérifie aussi ton nommage, je pense que ce n'est pas standard du tout (Majuscules, ...)
 
Met aussi des balises [ code ] -->
 

Code :
  1. private void toto(String tata){
  2. String tutu = tata;
  3. }


---------------
.
Reply

Marsh Posté le 12-12-2009 à 18:59:01    

Merci beaucoup du conseil je vais me renseigner sur "arraylist" je vois pas du tout ce que c'est.

Reply

Marsh Posté le 13-12-2009 à 16:46:12    

Encore mieux, je te conseille de stocker tes objets Client dans un HashSet et d'implémenter toi-même equals et compareTo dans la classe Client en utilisant le numéro de client comme clé de comparaison.
De cette façon la recherche d'un client dans le Set sera instantanée (pas besoin de parcourir le tableau ou lancer une recherche).
Si tu dois pouvoir récupérer la liste des clients triée par numéro de client régulièrement, tu peux utiliser un SortedSet qui est légèrement plus lent.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed