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

Java Discussion :

comportement boucle for bizarre


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut comportement boucle for bizarre
    Bonjour à tous,
    Voici mon souci :
    J'ai :
    - 1 ArrayList<Integer> tabSetSource : [0,1,2,3,4,...]
    - 1 ArrayList<Integer> tabSource : [0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,...]
    - 1 ArrayList<String> tabMot qui correspond à tabSource : [mot0,mot1,mot2,mot3,mot4,...]
    Je veux afficher les mots en fonction du tabSetSource et je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for (int i = 0; i < tabSetSource.size(); i++) {
         System.out.println("la source " + tabSetSource.get(i) + " a les mots suivants : ");
         for (int j = 0; j < tabSource.size(); j++) {
              if (tabSource.get(j) == tabSetSource.get(i)) {
                System.out.print(tabMot.get(j) + "|");
              }
         }
         System.out.println();
    }
    Cela m'affiche très bien les mots des 127 premières sources. Puis cela ne m'affiche qu'1 seul mot par source !!! Je n'y comprends rien !!!
    Merci de vos réponses !!
    @+

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Quel est la logique derrière tout cela ?
    J'ai essayé ton code avec les données indiquées, mais j'obtiens un IndexOutOfBoundsException...


    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    Salut,
    En fait cet exemple n'est qu'un test ! Je cherche derrière tout cela à calculer des fréquences de paires de mots.
    Si dans une source on a mot1, mot2, mot3 et mot4, alors il faut que je forme les paires
    mot1-mot2
    mot1-mot3
    mot1-mot4
    mot2-mot3
    mot2-mot4
    mot3-mot4
    et en comparant les paires une fois formées selon les sources, je calculerai des fréquences de paires.
    Donc la boucle qui me fait réellement ***** c'est la même mais avec une boucle supplémentaire j = i+1 qui me donne les paires à chaque fois.
    Mais pour l'exemple à vous proposer, j'ai pensé qu'il valait mieux enlever cette partie.
    Quant à l'IndexOutOfBoundsException : il faut que tabSource et tabMot aient exactement le même nombre de cases et que tabSetSource n'ait que des entiers qui aillent jusqu'à l'entier maximum de tabSource (en fait c'est un tabSource sans doublons)

    EDIT : en fait je fais ça avec un tabSetSource de taille 3354 et des tabSource et tabMot de taille 15003. Ca marche très bien mais pourquoi ça s'arrête à 127, et après ça n'affiche plus qu'un seul mot, c'est un mystère !

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Mais concrètement :
    • Que cherches-tu à faire ?
    • Quel est le problème ?
    • Quel est le code correspondant ?


    a++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    Concrètement :
    - je récupère des données [source;mot] dans une base de données : je les range dans 2 tableaux ArrayList tabSource et tabMot.
    - j'obtiens donc : tabSource = [0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,2 ... 3354,3354,3354] et tabMot = [mot0 à mot5 qui correspondent "virtuellement" à source(0),mot6 à mot10 qui correspondent "virtuellement" à source(1),mot11 à mot16 qui correspondent "virtuellement" à source(2) .... mot15000 à mot 15502 qui correspondent "virtuellement" à source(3354)]
    - je cherche justement, et simplement, à afficher cette correspondance :
    source 1 contient les mots mot0, mot1, mot2, mot3, mot4, mot5
    source 2 contient les mots mot6, mot4, mot8, mot9, mot10
    source 3 contient les mots mot11, mot12, mot13, mot14, mot15, mot16
    ...
    source 3354 contient les mots mot15000, mot15001, mot15002
    - j'ai donc créé un 3ème tableau tabSetSource contenant les sources sans doublons pour pouvoir faire ma boucle et le code est ci-dessous.
    - le problème :
    j'obtiens bien source(1) contient bla bla bla (= le bon nombre de mots et les bons mots) jusqu'à source(127) contient bla bla bla mais à partir de source(128), je n'obtient que bla (1 seul mot par source)

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    En gros tu veux récupérer tous les mots associés à un même Integer ? C'est ça ?

    Si la réponse est oui pourquoi faire si compliqué ? Une Map<Integer,List<String>> serait plus approprié non ?


    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Bizarre "goto" dans boucle "for" impossible
    Par hermes6236 dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 06/11/2013, 22h06
  2. [Débutant] boucle FOR bizarre
    Par kanwulf62 dans le forum MATLAB
    Réponses: 4
    Dernier message: 31/05/2013, 10h36
  3. comportement anormal boucle for
    Par virtual_bug dans le forum C++
    Réponses: 6
    Dernier message: 28/02/2012, 11h56
  4. Réponses: 3
    Dernier message: 20/09/2006, 22h35
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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