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 :

Combiner deux boucles for


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut Combiner deux boucles for
    Bonjour,

    Je cherche comment combiner deux boucles for dans une seule.

    Mes deux boucles sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (Element userElement : userElements )  && for (Element textElement : textElements) {
    }
    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    L'une dans l'autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (Element userElement : userElements ) {
      for (Element textElement : textElements) {
     
      }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    - Ou bien tu veux des boucles imbriquées, et cf ci-dessus.

    - Ou bien tu as deux listes de même taille, et tu veux les parcourir ensemble ; auquel cas, je ne connais pas de méthode très jolie. Il y a la méthode "je fais une boucle avec un entier i, et je parcoure sur la taille", et la méthode "je déclare deux itérateurs, et je fais next en même temps". La méthode sur les itérateurs est probablement la plus propre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Iterator<Element> itElement = userElements.iterator();
    Iterator<Element> itTextElement = textElements.iterator();
    while (itElement.hasNext() && itTextElement.hasNext()) {
    Element userElement = itElement.next();
    Element textElement = itTextElement.next();
    ...
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    merci Rei Ichido;
    j'ai intégré votre solution, mais le code final n'affiche rien ni résultat ni erreur.
    ici le 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
            List<Element> userElements = source.getAllElements(HTMLElementName.A);
            List<Element> textElements = source.getAllElements(HTMLElementName.DIV);
     
            Iterator<Element> itElement = userElements.iterator();
            Iterator<Element> itTextElement = textElements.iterator();
     
            while (itElement.hasNext() && itTextElement.hasNext()) {
                Element userElement = itElement.next();
                Element textElement = itTextElement.next();
     
                String profiArea = userElement.getAttributeValue("title"); //title="voir le profil complet"
                String textArea = textElement.getAttributeValue("class");
     
                if (("affTextArea".equals(textArea)) && ("voir le profil complet".equals(profiArea))) {
                    System.out.println("\n");
                    String text = textElement.getContent().getTextExtractor().toString();
                    String user = userElement.getContent().getTextExtractor().toString();
                    System.out.println(user + "\n" + text);
                }
    }
    merci

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    A priori, la condition du if n'est jamais respectée.

    Pour debugger, vous pouvez déjà afficher les valeurs des deux String profiArea et textArea avant le if, et diagnostiquer pourquoi vous n'y rentrez pas ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    vous avez raisons, le prb c'est dans le if,
    mais vous avez une solution comment faire une double condition

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    C'est à dire, une double condition ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    Je ne sais pas, déjà est-ce que les "doubles conditions" sont possibles ?
    En fait, j'aimerais savoir s'il y a une solution ou si je dois tout refaire ?

    Merci

  9. #9
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Il faudrait surtout définir ce qui doit être fait, parce que "Double condition", c'est flou.

    Actuellement, il y a un , ce qui veut dire qu'on rentre dans le if si les deux conditions sont simultanément respectées.

    Ca pourrait être un qui voudrait dire qu'il suffit que l'une des deux soit respectée pour qu'on rentre dans le if.

    Il pourrait aussi y avoir 2 ifs séparés avec des choses distinctes dedans ...

    EDIT : sinon une cause du problème pourrait être qu'il y a des espaces à la fin des chaînes testées, si elles ont l'air d'être correctes et que vous pensez que la condition du if est respectée. Tester un petit trim ne saurait faire de mal !

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    oui, tu peux mettre autant de condition que tu veux dans ton if, si c'est ça ta question.
    Ca a donné quoi le debug?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    je vous explique tous;
    en fait, j'analyse syntaxiquement un forum, et dans les forums comme vous savez il y a des membres et des message, le code que j'ai fais au début et celui là. il analyse chaque balise séparément :
    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
     
     List<Element> userElements = source.getAllElements(HTMLElementName.A);
            for (Element userElement : userElements ) {
                String profiArea = userElement.getAttributeValue("title"); //title="voir le profil complet"
                if ("voir le profil complet".equals(profiArea)) {       
                    System.out.println("\n");
                    String user = userElement.getContent().getTextExtractor().toString();
                    System.out.println(  user);
                }
                else
                    continue;
            }
     
            List<Element> textElements = source.getAllElements(HTMLElementName.DIV);
            for (Element textElement : textElements) {
                String textArea = textElement.getAttributeValue("class");
                if ("affTextArea".equals(textArea)) {
                    System.out.println("\n");
                    String text = textElement.getContent().getTextExtractor().toString();
                    System.out.println(text);
                }
                else
                    continue;
            }
    je veux combiné entre les deux résultat pour finalement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(user + text);

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Si tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(textArea+" "+profiArea);
    avant ta double condition, tu comprendras peut être pourquoi tu ne rentres pas dans ton if.
    Idélament il faudrait aussi ne pas déclarer tes String dans le while mais avant.

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Euh... Tu vas devoir trouver comment rattacher les messages aux utilisateurs qui les ont postés !

    Ce n'est pas une question de combiner des boucles.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    Oui thelvin, c'est exactement ce que je veux faire.

    nretrain : j'ai besoin de la condition if pour distinguer ma balise, sinon il donnera toutes les balises <div>.

  15. #15
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par AI_LINUX Voir le message
    oui thelvin, c exactement ce que je veux faire.
    Ben, tu as notre bénédiction, vas-y, ne te gêne pas.
    Ce n'est pas une question de combiner des boucles. Il faut trouver ce qui attache un message à son auteur, et ce n'est pas avec ce que tu nous as montré qu'on a la moindre chance de le deviner.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    je suis coincé.

  17. #17
    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
    je suis coincé.
    "A bâ vi"

    Plus sérieusement, peux tu nous indiquer les éléments que tu possèdes pour faire cette recherche ?
    Et par pitié, fait des System.out.println dans tout les sens et affiche nous le résultat de la console. Parce que juste avec le code sans savoir ce que contiennent "textArea" ou "profiArea" on ne va pas y arriver .
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    le dernier code que je vous ai montré me donne le résultat suivant :
    user1
    user2
    user3
    user1
    user3
    message user1
    message user2
    message user3
    message user1
    message user3

    tandis que moi je qu'il veux m'affiche ça :
    user1
    message user1
    user2
    message user2
    user3
    message user3
    ... etc

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Si tu fait :
    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
       List<Element> userElements = source.getAllElements(HTMLElementName.A);
            List<Element> textElements = source.getAllElements(HTMLElementName.DIV);
     
            Iterator<Element> itElement = userElements.iterator();
            Iterator<Element> itTextElement = textElements.iterator();
            String profiArea = new String();
            String textArea = new String();
     
            while (itElement.hasNext() && itTextElement.hasNext()) {
                Element userElement = itElement.next();
                Element textElement = itTextElement.next();
     
                profiArea = userElement.getAttributeValue("title"); //title="voir le profil complet"
                textArea = textElement.getAttributeValue("class");
                System.out.println("DEBUG : "+profiArea +textArea );
                if (("affTextArea".equals(textArea)) && ("voir le profil complet".equals(profiArea))) {
                    System.out.println("\n");
                    String text = textElement.getContent().getTextExtractor().toString();
                    String user = userElement.getContent().getTextExtractor().toString();
                    System.out.println(user + "\n" + text);
                }
    }
    Tu as quoi?

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    DEBUG : Inscriptions en lignenull
    DEBUG : site de l'IEDnull
    DEBUG : Forum d'accueil- psychologienull
    DEBUG : nullnull
    DEBUG : nullnull
    DEBUG : Liste de mes courscb_border
    DEBUG : Consulter votre agenda de formationnull
    DEBUG : Consulter les annonces de formationnull
    DEBUG : Mon profilcb_left
    DEBUG : Messagerie roundCubecb_right
    DEBUG : Mes statistiques d'utilisationcb_cell
    DEBUG : se déconnecternull
    DEBUG : nullcb_border_title
    DEBUG : nullcb_top_title
    DEBUG : nullnull
    ........
    je n'ai ni le nom d'utilisateur ni son message.

Discussions similaires

  1. Sortir de deux boucles FOR-END imbriquées
    Par Nabuchodonosor15 dans le forum MATLAB
    Réponses: 5
    Dernier message: 31/08/2009, 09h58
  2. Deux boucles for + un effet de bord ?
    Par Teufboy dans le forum Langage
    Réponses: 2
    Dernier message: 21/12/2007, 08h08
  3. Réponses: 3
    Dernier message: 24/05/2007, 17h56
  4. Batch - Deux boucle For imbriquées plus un FC
    Par Lorponos dans le forum Windows
    Réponses: 17
    Dernier message: 27/07/2006, 14h58
  5. comment quitter deux boucles for?
    Par davmaster62 dans le forum Général Python
    Réponses: 2
    Dernier message: 08/03/2006, 00h16

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