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

Langage Java Discussion :

une boucle définie comme une methode


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 77
    Points
    77
    Par défaut une boucle définie comme une methode
    Bonjour,

    j'ai une boucle dans une methode1() qui permet de parcourir un fichier et extraire donnée par donnée un "for(Event e : file)" par ex.

    ma question c'est je veux savoir si on peux mettre cette boucle dans une autre methode : methode2(Event e) et au lieu d'integrer la boucle dans methode1() .j'integre methode2(e) dans methode1().
    j'espere que c'est compri au moin

    et merci

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 866
    Points : 3 440
    Points
    3 440
    Par défaut
    Salut, oui tu peux appeler une méthode paramétré à l'intérieur d'une autre méthode, c'est même conseillé de séparer ton application avec des méthodes atomiques, pour faciliter la réutilisation.

    Je ne vois pas bien ce qui pourrait te faire croire que ça n'est pas possible ? Est-ce un souci de performance?

    Si oui, la performance est gérée par le compilateur, en théorie, et le compilateur de bytecode de sun est assez performant pour optimiser ce genre de choses.

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    non c'est juste parceque j'ai jammais entendu parlé pourraige avoir l'algorithme simplifié de cette methode ?et merci

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Voilà un exemple de division d'une grosse méthode en sous-méthodes: comme tu vois, ça n'a rien de sorcier.

    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
    19
     
    public void methodePrincipale() {
     
       List<Event> maListe = null;
       // recuperation de ta liste;
     
       traitementListe(maListe);
     
    }
     
    private void traitementListe(List<Event> maListe) {
       for(Event e: maListe) {
          traitementUnitaire(e);
       }
    }
     
    private void traitementUnitaire(Event e) {
       // ici la méthode de traitement d'un élément de ta boucle
    }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    en fait moi c'est plutot comme ca :

    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
    public void methodePrincipale() {
     
       Event event = null
     
       this.traitementListe(event);
        //traitement sur e
     
    }
     
    private void traitementListe(Event e) {
       for(Event e: file) 
         event=e;
         return event;
     
    }

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 866
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 866
    Points : 3 440
    Points
    3 440
    Par défaut
    Salut,

    Tu as des grosses confusion entre variables locales à une fonction, membres de classe, paramètres de méthode, et variables de retour.

    Quand dans ta méthode tu écris "event = e", le compilateur va te dire qu'il ne connait pas event; Normal, il n'existe pas dans la portée de ta méthode.

    De plus, l'interêt d'appeller une méthode pour traiter une liste, n'est jamais de retourner un élément de celle-ci, mais j'imagine dans ton cas plutot de traiter chacun des Event, et eventuellement de retourner une collection d'objets Event.

    Regarde ce 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public class MaClasseDeTest {
      private Collection<Event> mesEvents;
     
      // Le getter de ton membre privé
      public Collection<Event> getMesEvents() {
        return mesEvents;
      }
     
      public void chargerMonFichier(String fichier) {
        // lire le fichier
        BufferedReader monFichier = new BufferedReader(new FileReader(fichier));
     
        String ligne = null;
        while(ligne = monFichier.readLine() != null) {
          Event event = new Event();
          event.setName(ligne.substring(1,10));
          mesEvents.add(event);
        }
      }
     
      public static void main(String[] args) {
        MaClasseDeTest maClass = new MaClasseDeTest();
        maClass.chargerMonFichier("maListeDEvent.txt");
        // A ce stade, maClass.getMesEvents() te retournera ta collection chargée.
      }
    }
    A+

  7. #7
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Ta variable event, déclare-la plutôt comme attribut de ta classe, et ne fournit aucun paramètre à ta méthode traitementListe, et ça devrait marcher.

Discussions similaires

  1. [PDO] Une boucle while dans une boucle while
    Par subran dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/02/2015, 20h32
  2. [XL-2010] Countif sur une plage définie avec une boucle
    Par klash384 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2015, 17h57
  3. Réponses: 8
    Dernier message: 05/04/2011, 09h06
  4. [XSLT] Réutiliser une variable définie dans une boucle
    Par DelphLaga dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/10/2006, 17h49
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 22h24

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