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 :

Problème avec l'insertion dans une ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Problème avec l'insertion dans une ArrayList
    Bonjour,

    Mon ArrayList qui contient des matrices me retourne le même contenu dans chaque index ! je fais des affectations dans une boucle comme suit :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for (int i = 0; i < nbrIteration; i++) {
      for (int s = 0; s < LectureEntrees.ligand.length; s++) {
        for (int j = 0; j < 4; j++) {
           matLigandTransformation[s][j] = 0.0;
           for (int k = 0; k < 4; k++) {
             matLigandTransformation[s][j] += (LectureEntrees.ligand[s][k] * matTransformation[k][j]);
           }
         }
       }
     
      chromosomes.add(i,matLigandTransformation); // les valeurs sont écrasées!!
    }

    Merci pour votre aide

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,
    utilises la balise code stp (c'est un petit #) ça pique un peu les yeux

    Si tes valeurs sont écrasées c'est que tu dois avoir un problème avec ton indice "i". Affiche la taille de ta liste à la sortie de la boucle pour voir si tu à bien plusieurs éléments dedans.

    Soit dit en passant cet indice ne sert à rien car la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chromosomes.add(matLigandTransformation);
    ajoute en fin de liste ce qui reviens au même.

    Edit :

    Si tes valeurs sont écrasées c'est que tu dois avoir un problème avec ton indice "i". Affiche la taille de ta liste à la sortie de la boucle pour voir si tu à bien plusieurs éléments dedans.
    Autant pour moi j'avais mal lu c'est pas ça ton problème.
    Par contre je comprends vraiment rien à ton algo, il sert à quoi ?

    pourquoi faire et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matrice[s][j] += kke chose
    Tu peux écrire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matrice[s][j] = kke chose

  3. #3
    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
    La prochaine fois utilise les balises [code] : PS : J'me suis fais doubler là dessus.

    En même temps dans tes calculs, je ne vois pas à quoi sert ton indice i. Ce que je vois c'est que tu fais les mêmes calculs pour chaque indice de i donc lorsque tu ajoutes ton tableau dans ton ArrayList, oui il contient les mêmes valeurs que le tableau de ton indice précédent.

    Enfin c'est peut être parce que nous n'avons pas tout le code de visible aussi.
    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/

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par Robin56 Voir le message
    En même temps dans tes calculs, je ne vois pas à quoi sert ton indice i.
    A déterminer le nombre d'itération

    Citation Envoyé par Nico02 Voir le message
    utilises la balise code stp (c'est un petit #) ça pique un peu les yeux
    J'ai corrigé

    Citation Envoyé par Nico02 Voir le message
    Si tes valeurs sont écrasées c'est que tu dois avoir un problème avec ton indice "i". Affiche la taille de ta liste à la sortie de la boucle pour voir si tu à bien plusieurs éléments dedans.

    Soit dit en passant cet indice ne sert à rien car la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chromosomes.add(matLigandTransformation);

    ajoute en fin de liste ce qui reviens au même.



    Citation Envoyé par Nico02 Voir le message
    pourquoi faire et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matrice[s][j] += kke chose
    Tu peux écrire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matrice[s][j] = kke chose

    Il s'agit bien d'une incrémentation !

    Citation Envoyé par LoveIinfo Voir le message
    Bonjour,

    Mon ArrayList qui contient des matrices me retourne le même contenu dans chaque index ! je fais des affectations dans une boucle comme suit :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for (int i = 0; i < nbrIteration; i++) {
      for (int s = 0; s < LectureEntrees.ligand.length; s++) {
        for (int j = 0; j < 4; j++) {
           matLigandTransformation[s][j] = 0.0;
           for (int k = 0; k < 4; k++) {
             matLigandTransformation[s][j] += (LectureEntrees.ligand[s][k] * matTransformation[k][j]);
           }
         }
       }
     
      chromosomes.add(i,matLigandTransformation); // les valeurs sont écrasées!!
    }

    Merci pour votre aide
    Tu utilises le même tableau à chaque fois !
    Il faut créer un nouveau tableau à chaque fois, sinon tu partages le même tableau pour tout les indices.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
      public PopulationInitiale(double pasT, double pasR, int nbrIteration) {
            //  VecteurTranslation v = new VecteurTranslation();
     
            double[][] matLigandTransformation = new double[LectureEntrees.ligand.length][4];
            double[][] matTransformation = new double[4][4];
            double[][] mt = new double[8][4];
            double[][] mr = new double[4][4];
     
            fitness = new double[nbrIteration];
                angles = new double[nbrIteration];
     
     
    ////////////////////////////////////////////////////////////////////////////////////////
          /* ///////////////////////// début de la boucle //////////////////////////////////*/
     
            //  System.out.println("taille ligand" + LectureEntrees.ligand.length);
     
            for (int i = 0; i < nbrIteration; i++) {
     
     
     
     
     
                LectureEntrees.vT1 = LectureEntrees.vT1 + pasT;
                LectureEntrees.vT2 = LectureEntrees.vT2 + pasT;
                LectureEntrees.vT3 = LectureEntrees.vT3 + pasT;
     
    ////////////////////////translations////////////////////////////////////////
                new VecteurTranslation().SetX(-LectureEntrees.vT1);
                new VecteurTranslation().SetY(-LectureEntrees.vT2);
                new VecteurTranslation().SetZ(-LectureEntrees.vT3);
     
                listMatriceTranslation.add(new Matrice().Translation(new VecteurTranslation()));
     
     
    /////////////////////////////rotations/////////////////////////////////////////
     
                LectureEntrees.vR1 = LectureEntrees.vR1 + pasR;
                LectureEntrees.vR2 = LectureEntrees.vR2 + pasR;
                LectureEntrees.vR3 = LectureEntrees.vR3 + pasR;
     
     
     
                listMatriceRotation.add(new Matrice().RotationAngleAxis(new VecteurRotation()));
     
                /////////////////////////////////////////////////////////////////////////////////
     
     
    //////////////mt reçoit la matrice de translation
                for (int k = 0, l = 0; l < 4 && k < 8; k++, l++) {
                    for (int j = 0; j < 4; j++) {
                        mt[k][j] = Matrice.m_translation[l][j];
                    }
                }
    /////////////mr = mat de rotation
                mr = Matrice.m_rotation;
    //
     //produit matricielle entre MR et MT
                //cas où le complexe est = au produit des deux matrices MT et MR
     
                for (int s = 0; s < 4; s++) {
                    for (int j = 0; j < 4; j++) {
                        matTransformation[s][j] = 0.0;
                        for (int k = 0; k < 4; k++) {
                            matTransformation[s][j] += (Matrice.m_translation[s][k] * mr[k][j]);
                        }
                    }
                }
     
     ///////multiplier matTransformation avec ligand
     
                for (int s = 0; s < LectureEntrees.ligand.length; s++) {
                    for (int j = 0; j < 4; j++) {
                        matLigandTransformation[s][j] = 0.0;
                        for (int k = 0; k < 4; k++) {
     
                            matLigandTransformation[s][j] += (LectureEntrees.ligand[s][k] * matTransformation[k][j]);
                        }
                    }
                }
     
     
                chromosomes.add(i,matLigandTransformation);
    c'est juste que j'ai pas copié tout le code. le calcul change à chaque fois, mais les valeurs s'écrasent dans ArrayList !
    svp aidez moi. Merci

  6. #6
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par Nemek Voir le message
    Tu utilises le même tableau à chaque fois !
    Il faut créer un nouveau tableau à chaque fois, sinon tu partages le même tableau pour tout les indices.
    Le tableau est initialisé une seule fois et tu réutilises toujours la même instance pour tout tes indices.
    double[][] matLigandTransformation = new double[LectureEntrees.ligand.length][4];
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Oh Merci, j'aurai du vérifier les initialisations!!!

    merci infiniment

  8. #8
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Il s'agit bien d'une incrémentation !
    Oui en effet j'avais mal compris, mea-culpa

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

Discussions similaires

  1. [MySQL] Problème pour l'insertion dans une base de données avec variables $_POST
    Par hakkio dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/03/2012, 18h04
  2. Problème avec l'insertion d'une image dans JPanel
    Par anutka dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 16/03/2006, 11h02
  3. Problèmes avec un TWebBrowser dans une DLL
    Par bellamyjc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/01/2005, 23h35
  4. Problème avec un LIKE dans une procédure stockée
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2004, 15h38
  5. [MFC] problème avec les insertions dans CComboBox
    Par Joeleclems dans le forum MFC
    Réponses: 12
    Dernier message: 11/06/2004, 16h31

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