Liste de tableaux

Fermé
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 - 20 juil. 2014 à 14:32
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 20 juil. 2014 à 21:04
Bonjour, j'aimerai créer une liste qui contient dans chaque élément, 9 éléments. C'est à dire un tableau de 9 élément dans chaque élément de la liste.
Alors j'ai tenté des trucs du genre :
ArrayListe<Double[]> liste = new ArrayList<Double[]>();

liste[0].add(14);
liste[1].add(15);
..
..
..

Mais ça ne marche pas..
Pouvez-vous m'aider ?
Merci d'avance !

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
20 juil. 2014 à 14:55
Bonjour,

ArrayListe (avec une vilain E à la fin) n'existe pas, il faut absolument respecter le nom de chaque chose en Java.

Ensuite, tu t'es emmêlé les pinceaux. Si ce que tu veux faire c'est
liste[0].add(14)
alors il te faut une
List<Double>[] liste;
, or tu as défini une
List<Double[]>
qui se manipule plutôt en faisant
Double[] tab = {1,2,3}; liste.add(tab);
.

Remarque : il est généralement maladroit de mélanger tableaux et collections. Tu devrais plutôt essayer de faire soit un
Double[][]
soit une
List<List<Double>>
.
0
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
Modifié par KX le 20/07/2014 à 20:38
Oui c'est vrai que je m'emmêle pas mal à mon avis...
En fait, j'ai deux boucles for imbriquées, et j'aimerais stocker chaque résultat dans la boucle pour ensuite les comparer. Alors j'ai ce code là(en utilisant un tableau) :

        for(int i=0;i<Max;i++)
        {
            for(int j=0;j<Max;j++)
            {

                Mise[Indice1] = 0.25 + 0.01*j;
                Mise[Indice3] = 0.25 + 0.01*i;

                Mise[Indice2] = (Mise[Indice1] + Mise[Indice3])/(Cote[Indice2]-1);
                somme = Mise[Indice1] + Mise[Indice2] + Mise[Indice3];

                var = -somme + Mise[Indice3]*Cote[Indice3];

                Gains[Indice1] = -somme + Cote[Indice1]*Mise[Indice1];
                Gains[Indice2] = -somme + Cote[Indice2]*Mise[Indice2];
                Gains[Indice3] = -somme + Cote[Indice3]*Mise[Indice3];

                pourcentage[Indice1] = Gains[Indice1]*100/Maximum;
                pourcentage[Indice2] = Gains[Indice2]*100/Maximum;
                pourcentage[Indice3] = Gains[Indice3]*100/Maximum;
     
                                       
                    
                       Gain[i][j] = Gains[Indice1];
                    


                }


Mais cela ne marche pas trop. Surement parce que je ne comprends pas vraiment ce que je fais...
Gain[][] est de taille [Max][Max], alors que je n'ai qu'une seule valeur à stocker (ici Gains[Indice1]) qui change avec i ET j, alors je ne sais pas trop comment écrire ça...
Pourrais-je avoir un peu d'aide ?
Merci d'avance !
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
20 juil. 2014 à 21:04
"je ne comprends pas vraiment ce que je fais"
C'est bien embêtant ça, alors à quoi sert ce code ? Par exemple à quoi servent Mise, Indice1,2,3, somme, Gains, Cote... tout ça tu les as mis là, pourquoi ?

Un truc étonnant c'est tes Indice1,2,3. Ils ne changent jamais. Ça veut dire que ce que tu mets dans Mise[Indice1] , Gains[Indice1], pourcentage[Indice1], toutes ces valeurs seront effacées immédiatement après le tour de boucle suivant, elles ne servent donc à rien. La seule chose qui est modifiée c'est Gains[i][j], tout les autres calculs sont donc inutiles.

Concrètement, si on enlève tout le code qui ne sert à rien, on peut réécrire le remplissage du tableau Gains de la manière manière suivante :

double c1 = Cote[Indice1];
double c2 = Cote[Indice2]-1;

for(int i=0; i<Max; i++)
for(int j=0; j<Max; j++)
{
    double x1 = 0.25 + 0.01*j;
    double x3 = 0.25 + 0.01*i;
    double x2 = (x1 + x3) / c2;

    Gain[i][j] = c1*x1 - (x1 + x2 + x3);
}

Remarque : jusqu'ici je ne vois pas le rapport avec les listes...
0