IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Recherche dans un tableau et somme


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 50
    Points : 52
    Points
    52
    Par défaut Recherche dans un tableau et somme
    Bonjour à tous,

    Je vous souhaite une bonne année 2015

    J'ai actuellement un tableau de String avec les lignes suivantes :
    10425100 E00120 DUPONT 333.60
    20625004 83.40 0.00
    20625004 83.40 0.00
    20625004 83.40 0.00
    20625004 83.40 0.00
    10425100 E00125 DURAND 334.87
    20625004 140.19445661 9.81
    20625000 93.46445661 6.54
    20625004 42.73445661 4.27
    20625004 37.87 0.00

    Les lignes commençant par 10 correspondent à une en-tête.
    Les autres lignes sont des détails de cet en-tête.

    Il faudrait que dans un nouveau tableau, j'ai une seule ligne par compte comptable.

    Je m'explique :

    Dans la deuxième en-tête, au lieu d'avoir 7 lignes :
    625004 140.19
    445661 9.81
    625000 93.46
    445661 6.54
    625004 42.73
    445661 4.27
    625004 37.87

    Il faudrait que j'ai 3 lignes :
    625004 220.79
    445661 20.62
    625000 93.46

    Alors, j'ai réussi à faire selon les 7 lignes (simple, un parcours du tableau existant et voilà ); mais je n'arrive pas à faire en sorte de n'avoir que les 3 lignes.

    Si quelqu'un a une idée, je suis preneuse Merci!

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Ben... J'ai pas trop compris le problème. En gros, tu as un tableau de 7 lignes et tu veux le réduire en un tableau de 3 ?

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    Au départ, j'ai un tableau comme ça :

    10425100 E00125 DURAND 334.87
    20625004 140.19445661 9.81
    20625000 93.46445661 6.54
    20625004 42.73445661 4.27
    20625004 37.87 0.00

    Au final, je dois avoir un tableau comme ça :

    625004 220.79
    445661 20.62
    625000 93.46

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Je connais rien à la compta ^^

    Comment du sais comment tu dois couper :

    20625004 140.19445661 9.81

    pour obtenir

    625004 140.19
    445661 9.81

    ?

    Est-ce que la logique c'est :
    J'enlève les 2 premiers chiffres, puis je cherche le ".", puis je coupe au niveau du 2e chiffre après le "." ?

    ou est-ce que c'est :
    J'enlève les 2 premiers chiffres, puis je cherche le nombre compris entre le "." et l'espace, je compte 6 chiffres à partir de la fin et je coupe ?

    Enfin bref, comment tu sais toi, pour une ligne quelconque du tableau, comment tu dois la couper ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Comme toujours devant un problème relativement complexe: diviser pour reigner. Je commencerais par créer une classe "Compte" avec un constructeur prenant l'entête et une méthode addLigne(String) où j'ajouterais les lignes commencant par 20, au fur et à mesure.

    Cette méthode est alors libre de décomposer la ligne, de trouver son identifiant, et d'utilser une structure interne pour associer chaque identifiant à sa valeur, pour faire la somme au fur et à mesure.

    Ensuite, coté lecture: à chaque fois que tu rencontre une ligne commencant par 10 tu crée un nouveau Compte, à chaque fois que tu rencontre une ligne commençant par 20 tu fais un addLigne sur le dernier Compte.

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    Pour couper ça 20625004 140.19445661 9.81, la logique c'est :

    - Comptecomptable = la ligne . substring(2,8).trim() => Un compte comptable est toujours composé de six caractères

    - Montant = la ligne . substring(9,14).trim()

    -ligneFinale = CompteComptable + blanc + Montant

    //pour l'instant, j'ajoute la ligne finale dans mon tableau final

    si la ligne. substring(15,21) commence par "4456" (=>un taux de tva commence toujours par 4456 ici) alors

    - On refait la même chose qu'avant (compteComptable, montant, ligneFinale, ajout)


    Sauf que ceci marche si on ne veut pas faire la somme pour chaque compte.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Ben, du coup, j'arrive pas à cerner exactement où tu coince. Tu semble savoir lire tes lignes en entrée, les analyser, les découper correctement, les mettre dans un tableau... En lisant ta question, j'ai eu l'impression que tu arrivais même à avoir le résultat escompté, mais dans un tableau de 7 cases au lieu de 3... Bon, peut-être qu'il faudrait que tu nous fasse lire un peu de code ? Ou préciser un peu ta question ? Ou c'est peut-être moi qui comprends rien...

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    Citation Envoyé par manouch95 Voir le message
    Au départ, j'ai un tableau comme ça :

    10425100 E00125 DURAND 334.87
    20625004 140.19445661 9.81
    20625000 93.46445661 6.54
    20625004 42.73445661 4.27
    20625004 37.87 0.00

    Au final, je dois avoir un tableau comme ça :

    625004 220.79
    445661 20.62
    625000 93.46
    tu peux utilser Map<String,Map<String,BigDecimal>> pour collecter les données relatives à un compte client:

    la clé de Map<String,BigDecimal> contient le numéro du compte (625004, 625000, etc...) et les valeurs sont les montants du compte

    la clé de Map<String,Map<String,BigDecimal>> contient le numéro du client (E00125, .....par exemple)

Discussions similaires

  1. [Tableaux] recherche dans un TABLEAU
    Par dunbar dans le forum Langage
    Réponses: 3
    Dernier message: 15/08/2006, 00h06
  2. [VBA-E]Recherche dans un tableau
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 05/07/2006, 10h35
  3. Recherche dans un tableau
    Par Bes74 dans le forum Access
    Réponses: 5
    Dernier message: 04/07/2006, 17h26
  4. [VBA-E] recherche dans un tableau
    Par tibss dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 03/05/2006, 17h52
  5. URGENt: recherche dans un tableau trié par ordre alphabetiqu
    Par JulPop dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2005, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo