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

avec Java Discussion :

Faire le même traitement pour plusieurs lignes


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Faire le même traitement pour plusieurs lignes
    Bonjour tous le monde!
    Bon je me sis coincé sur une partie codée en java
    bon un exemple

    achat
    -produit.VCXY.67.0
    -produit.UIJB.77.0

    Bon je doit verifier que ce message de type txt respecte cette forme la
    voila le code

    //la partie gestion du flux c'est bn ... Skip it

    for(int i=0;i<=2;i++)
    {
    ligne[i]=br.readline();
    }
    String ch[]=ligne[1].split("\\.");
    if(ch[0].startwith("-"))
    {
    //faire le traitement .....

    //......

    }
    Le probleme c'est que ligne 1 et 2 sont identitques au traitment
    alors pour eviter de la redonance , je doit faire le meme traitement sur la ligne 2
    j'ai essayer faire une boucle for , while mais donne chaque fois le traitement sur une seule ligne
    j'ai besoin de vos idées et solutions
    merci en avance!

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Bonjour

    Je n'ai pas très bien compris ce que tu voulais faire, mais le plus simple est sans doute d'écrire une sous fonction chargée d'exécuter le traitement et de l'appeler deux fois
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Aldian +1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public boolean estConforme(String str){
    if(str.startsWith("-") return true;
    else return false;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0;i<=2;i++)
     {
     String line = br.readline();
    if(estConforme(line)){
    //Traitement
    }
    }
     }
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String ch[]=ligne[1].split("\\.");
    Pourquoi [1] en dur et non [i] ?

    Dan

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par danimo Voir le message
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String ch[]=ligne[1].split("\\.");
    Pourquoi [1] en dur et non [i] ?

    Dan
    Bon , je l'ai essayé mais donne le traitement que pour la premier ligne !

  6. #6
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par noraix Voir le message
    Bon , je l'ai essayé mais donne le traitement que pour la premier ligne !
    Pour l'histoire du ligne[i], il faut évidemment que tout le traitement soit dans la boucle.

    Utilise les portions de code formatées par Ivelios.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  7. #7
    Membre éclairé

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Points : 837
    Points
    837
    Par défaut
    Citation Envoyé par noraix Voir le message
    Le probleme c'est que ligne 1 et 2 sont identitques au traitment
    alors pour eviter de la redonance , je doit faire le meme traitement sur la ligne 2
    j'ai essayer faire une boucle for , while mais donne chaque fois le traitement sur une seule ligne
    j'ai besoin de vos idées et solutions
    merci en avance!
    Comment tu as fait ta boucle for?

    Voici à quoi elle devrait ressembler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (int j=1; j <= 2; j++)
    {
      String ch[]=ligne[j].split("\\.");
      if(ch[0].startwith("-"))
      {
        //faire le traitement .....
     
        //......
      }
    }
    Note: la boucle commence à j=1 car il semble que tu n'utilises pas ligne[0]...

    Note: à l'intérieur de la boucle, la valeur de j est d'abord 1 puis 2. Cela me permet de remplacer ligne[1] avec ligne[j].

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    @Ivelios
    Tu peux simplifier ta méthode et la rendre plus lisible comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public boolean estConforme(String str){
    return str.startsWith("-");
    }
    Je trouve ça plus clair que le pseudo code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI vrai ALORS RETOURNE vrai SINON RETOURNE faux


    @noraix
    Ton code lit les lignes de ton fichier texte et les mets dans un String[] ensuite, tu ne traite que la première ligne !?!?

    Voici comment tu pourrais t'en sortir (code non testé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    // Lecture de la 1ere ligne
    String ligne = br.readLine();
     
    // Tant qu'il y a des lignes à lire dans le fichier
    while (ligne != null) {
     
    // Si la ligne commence par un tiret
    if (ligne.startWith("-")) {
     
      // Mettre ton traitement ici (ou appel à une méthode avec en parametre la ligne lue) ex: String[] elements = ligne.split("\\."); ....
     
    }
    // Pas de else: les autres lignes sont ignorées
     
    // Lecture de la ligne suivante
    ligne = br.readLine();
    }
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  9. #9
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Tu peux simplifier ta méthode et la rendre plus lisible
    Alors là, je n'en doute pas le moins du monde, j'ai fait le bout de code en vitesse sans réfléchir

    Et comme tu le propose plus loin, il n'est même pas utile d'utiliser une méthode intermédiaire vu le peu de traitement à faire.
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  10. #10
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    salut

    c'est normale qu'il fait le traitement que pour la ligne 1 parce que l'exécution du traitement est hors la boucle .
    voila la modification du ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    for(int i=0;i<=2;i++)
    {
    ligne[i]=br.readline();
     
    String ch[]=ligne[1].split("\\.");
    if(ch[0].startwith("-"))
    {
    //faire le traitement .....
     
    //......
     
    }//fin if 
     
    }//fin boucle for

Discussions similaires

  1. trigger delete pour plusieurs lignes
    Par Shabata dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/09/2009, 01h00
  2. [VBA Excel] Une même macro pour plusieurs CheckBox
    Par Choupett' dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 16/06/2006, 13h54
  3. [VBA-E] répéter un tri décroissant pour plusieurs lignes
    Par rajmoule dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/03/2006, 17h12
  4. Réponses: 10
    Dernier message: 01/04/2005, 13h14
  5. [excel vba]case à cocher dans excel pour plusieurs lignes
    Par fcoisb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2005, 11h23

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