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

avec Java Discussion :

Erreur "java.lang.IndexOutOfBoundsException: Index: 4, Size: 4"


Sujet :

avec Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Erreur "java.lang.IndexOutOfBoundsException: Index: 4, Size: 4"
    Bonjour,

    Je suis débutante en Java et je désire faire un programme dont les données d'entrée sont les suivantes :
    1 10 11 12
    2 1474 119 18
    3 1658 152 28
    4 1381 119 20
    5 854 66 10
    6 1299 270 43.58056641
    7 793 77 32
    8 1230 116 0
    9 606 145.6937256 24.72756958
    10 1004 112.4961548 24.64657593
    11 1194 192.3924561 30.37597656
    12 1212 119.6147461 24.68707275
    13 1 1 2 2
    A partir de ce programme, je désire pour deux (ou différents) colonnes ayant la même valeur au niveau de la dernière ligne (ligne 13), récupérer uniquement les colonnes qui ont une la plus forte valeur de la ligne 12 (l'avant dernière ligne). Par exemple pour les colonnes 2 et 3, elles possèdent une même valeur (égale à 1 pour la ligne 13), mais la colonne 2 uniquement sera retenue puisque sa valeur = 1212 (ligne 12) qui est > à celle égale à 119.6147461, etc.... Bien évidemment je supprime les colonnes dont j'en ai pas besoin. Je veux après écrire le résultat dans un fichier texte (je n'ai toujours pas fait cette étape). Mais avant tout selon le code ci-dessous, j'obtiens l'erreur java.lang.IndexOutOfBoundsException: Index: 4, Size: 4 (que je n'arrive pas à résoudre)

    Extrait du résultat obtenu:
    (cont....)
    24.68707275
    1.0
    1.0
    2.0
    2.0
    Les valeurs communes sont 1.0 , 1.0, et la médiane la plus grande est 1212.0
    Same PcGroupe!!
    Elément0 , 10.0 supprimé!
    Elément1 , 1474.0 supprimé!
    Elément2 , 1658.0 supprimé!
    Elément3 , 1381.0 supprimé!
    Elément4 , 854.0 supprimé!
    Elément5 , 1299.0 supprimé!
    Elément6 , 793.0 supprimé!
    Elément7 , 1230.0 supprimé!
    Elément8 , 606.0 supprimé!
    Elément9 , 1004.0 supprimé!
    Elément10 , 1194.0 supprimé!
    Elément11 , 1212.0 supprimé!
    Elément12 , 1.0 supprimé!
    java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
    Voici mon 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
    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
    import java.util.*;
    import java.io.*;
     
    public class TriIOnPCGroupe {
     
        public static void main(String[] args) 
           { 
            try { 
                 InputStream ips = new FileInputStream("C:/Users/dgrissa/Desktop/PCGroupe.txt"); 
                 InputStreamReader ipsr = new InputStreamReader(ips); 
                 BufferedReader br = new BufferedReader(ipsr); 
                 String ligne = " ";
                 int nombreDeLignes = 13; // par exemple 
                 int nombreDeColonnes = 4; 
                 List<List<Double>> valeurs = new ArrayList<List<Double>>();    
     
                while ((ligne = br.readLine()) != null) {
                    String[] valeursTextuelles = ligne.split("\t"); 
                    List<Double> valeursLigne = new ArrayList<Double>();
                    if (valeursTextuelles != null)
                        for (String valeurTextuelle : valeursTextuelles)
                            valeursLigne.add(Double.parseDouble(valeurTextuelle));
     
                    valeurs.add(valeursLigne);
                } 
     
                for(List<Double> elem: valeurs)
                 {
                      System.out.println (elem);
                 }
     
                // lire le contenu d'une liste élément par élément
     
                double val  = 0.00;
                double cmp1 = 0.00;
                double cmp2 = 0.00;
                double med1 = 0.00;
                double med2 = 0.00;
     
                for (int i = 0; i < valeurs.size(); i++)
                {
                  for (int j = 1; j < valeurs.get(i).size(); j++) 
                  {
                    if (valeurs.get(i) != null)
                        if (valeurs.get(i).size() > j)
                            val = valeurs.get(i).get(j);
                            System.out.println (val);                   
                  }        
                }
     
                for (int k = 1; k < valeurs.size(); k++){
                    cmp1 = valeurs.get(12).get(k);
                    cmp2 = valeurs.get(12).get(k+1);
                    med1 = valeurs.get(11).get(k);
                    med2 = valeurs.get(11).get(k+1);
                    if(cmp1 == cmp2){
                        if (med1>med2){
                            System.out.println("Les valeurs communes sont " +valeurs.get(12).get(k)+ " , " +valeurs.get(12).get(k+1) +", et la mediane la plus grande est "+med1);
                            System.out.println ("Same PcGroupe!!");
                            //Supprimer la colonne!!
                            for (int n= 0; n < valeurs.size(); n++){
                                valeurs.remove(valeurs.get(n).get(k));
                                System.out.println ("Elément" + n + " , " +valeurs.get(n).get(k) + " supprimé!");
                            }
                        }else System.out.println("La valeur commune est " +valeurs.get(12).get(k)+", et la mediane la plus grande est "+med2);
     
     
                    } //else System.out.println ("Nothing!!");
                }
     
                ips.close();
            } 
       catch (Exception e) { 
       System.out.println(e.toString()); 
       } 
      }
    }
    Quelqu'un saurait-il m'indiquer comment corriger ce problème ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Tout d'abord, merci de reprendre ton message et de mettre les balises CODE autour de ton programme
    avec le bouton # dans la barre d'outils

    à quelle ligne est le message d'erreur ?

  3. #3
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    voilà pour les modifications demandées Merci pour votre attention!

    J'ai aussi indiqué le résultat que je trouve.

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Je suppose que le plantage se situe à l'endroit où tu supprimes ta colonne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	        			for (int n= 0; n < valeurs.size(); n++){
    	        				valeurs.remove(valeurs.get(n).get(k));
    	        				System.out.println ("Elément" + n + " , " +valeurs.get(n).get(k) + " supprimé!");
    	        			}
    si ton tableau fait 5 éléments, avec int n= 0; n < valeurs.size(); n++
    il va chercher à supprimer les éléments :
    0,1,2,3,4

    oui mais au fur et à mesure de la suppression, le tableau diminue
    et donc quand il cherche à supprimer l'élément n°4 la colonne n'existe plus !!!!

    essaye en partant du plus grand vers le plus petit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (int n= valeurs.size()-1; n ==0; n--)

  5. #5
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Non ça n'a pas marché, il n'a rien supprimé même :\
    J'ai essayé de désactiver cette boucle, et j'obtiens toujours la même réponse

    (cont..)
    1.0
    1.0
    2.0
    2.0
    Les valeurs communes sont 1.0 , 1.0, et la mediane la plus grande est 1212.0
    Same PcGroupe!!
    java.lang.IndexOutOfBoundsException: Index: 4, Size: 4

    Je pense que ça se passe au niveau de la boucle for suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int k = 1; k < valeurs.size(); k++)
    Qu'en pensez-vous?

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut
    J'en pense qu'avec le numéro de ligne d'erreur on pataugerait moins !
    peux-tu poster la stack-trace ?

  7. #7
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    C'est pas sorcier. Le message est plutot clair, tu essayes d'acceder à un element d'index 4 alors que la liste ne contient que 4 elements (l'index commencant à 0, tu peux acceder de 0 à 3 inclus).
    La plupart du temps, il faut chercher une boucle ou on inclus la derniere valeur. Un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int k = 1; k <= monArray.size(); k++)
    Ou bien un acces à une valeur suivante. Un truc qui ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int k = 1; k <= monArray.size(); k++)
    {
       Object o = monArray.get(k + 1);
    }
    Et dans ton code, il y a ca qui ressemble furieusement à l'exemple 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int k = 1; k < valeurs.size(); k++){
    	        	cmp1 = valeurs.get(12).get(k);
    	        	cmp2 = valeurs.get(12).get(k+1);

  8. #8
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    En gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // déclaration du tableau de 4 éléments
    int[] table ={1,2,3,4};
    System.out.println(table[0]); // affiche 1
    System.out.println(table[1]); // affiche 2
    System.out.println(table[2]); // affiche 3
    System.out.println(table[3]); // affiche 4
    System.out.println(table[4]); // Déclenche l'exception =  > java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
    Normalement, ton exception à une trace avec ! Celle-ci indique la stack d'appel et la ligne qui est en erreur. Tu devrais nous indiquer quel est cette ligne. (Et cherche pourquoi tu accède à ce tableau de manière improbable)

    Cordialement,
    Patrick Kolodziejczyk.

  9. #9
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je travaille sous eclipse et je ne vois pas comment obtenir le numéro de la ligne!

  10. #10
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Regarde le message d'erreur complet IndexOutOfBoundsException
    il ne mentionne pas le n°de ligne ?

  11. #11
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    De toute facon, il n'y a pas besoin de tourner autour du pot pendant 107 ans. Le probleme vient de la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int k = 1; k < valeurs.size(); k++){
    	        	cmp1 = valeurs.get(12).get(k);
    	        	cmp2 = valeurs.get(12).get(k+1);
    	        	med1 = valeurs.get(11).get(k);
    	        	med2 = valeurs.get(11).get(k+1);
    k varie entre 1 et le nombre d'entrées de la liste "valeurs". A l'évidence, la liste 11 ou 12 ne possede pas le bon nombre d'élements.
    Ce qui est surement normal puisqu'en allant de 1 à valeurs.size(), tu utilises le nombre de lignes alors que tu demandes les colonnes. par ailleurs, en informatique, les tableaux commencent plutot à 0. Et meme si ta borne étatit bonne, il faudrait plutot comparer les elements k et k - 1 au vu de ta boucle.

  12. #12
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'ai tout essayé:
    changer k par k-1,
    commencer l'incrémentation par 0
    j'ai aussi changé la condition d'arrêt de la manière suivante, mais toujours le même problème!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for (int k = 1; k < valeurs.get(12).size(); k++){
    	        	System.out.println("Première valeur " +valeurs.get(12).get(k-1)+ " suivante est " + valeurs.get(12).get(k));
    	        	cmp1 = valeurs.get(12).get(k-1);
    	        	cmp2 = valeurs.get(12).get(k);
    	        	med1 = valeurs.get(11).get(k-1);
    	        	med2 = valeurs.get(11).get(k);


    Pour la question concernant le numéro de ligne provoquant l'exception, eclipse ne l'affiche pas

  13. #13
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Citation Envoyé par ddgrissa Voir le message
    Pour la question concernant le numéro de ligne provoquant l'exception, eclipse ne l'affiche pas
    c'est pas eclipse qui ne l'affiche pas car tu te contente de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(e.toString());
    Si tu veux la stackTrace complète il faut faire :

  14. #14
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Mercii Déjà je peux voir identifier le numéro de la ligne. Voilà le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at TriIOnPCGroupe.main(TriIOnPCGroupe.java:55)

    C'est-à-dire au niveau de cette ligne du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    med2 = valeurs.get(11).get(k);

  15. #15
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    et oui donc c'est normal !

    valeurs.get(11) correspond a [12 1212 119.6147461 24.68707275] et les indexes respectifs sont 0 1 2 3.
    Tu n'as donc pas d'index 4 d'ou l'erreur

  16. #16
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Maintenant, il faut bien comprendre que manipuler l'index k avec du -1 ou du +1 pose fatalement problème sur les bornes !

    Si tu fais un +1 alors tu dois vérifier que tu n'est pas sur le dernier élément avant de le faire.
    De la même façon si tu fais un -1 alors tu dois vérifier que tu n'est pas sur le premier élément avant de le faire.

    Sans cela tu aura ce type d'erreur !

  17. #17
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Aller, je reposte encore une fois la raison qui etait deja dans mon post précédent :
    Citation Envoyé par hwoarang Voir le message
    Ce qui est surement normal puisqu'en allant de 1 à valeurs.size(), tu utilises le nombre de lignes alors que tu demandes les colonnes.
    D'apres ton premier post, valeurs contient un tableau de double lu dans un fichier. Donc, si tu parcours de 1 à valeurs.size(), tu parcours les lignes.

    Et plus loin, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int k = 1; k < valeurs.size(); k++){
    	        	cmp1 = valeurs.get(12).get(k);
    	        	cmp2 = valeurs.get(12).get(k+1);
    	        	med1 = valeurs.get(11).get(k);
    	        	med2 = valeurs.get(11).get(k+1);
    Donc tu recuperes la colonne correspondant à l'index de la ligne. Vu que l'exception n'a pas l'air de venir de valeurs.get(12), ca veut dire qu'il y a au moins 13 lignes. Donc, à partir de la 4e colonne, tu as une exception.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int k = 1; k < valeurs.get(12).size(); k++){
    	        	System.out.println("Première valeur " +valeurs.get(12).get(k-1)+ " suivante est " + valeurs.get(12).get(k));
    	        	cmp1 = valeurs.get(12).get(k-1);
    	        	cmp2 = valeurs.get(12).get(k);
    	        	med1 = valeurs.get(11).get(k-1);
    	        	med2 = valeurs.get(11).get(k);
    Ca, ca a l'air mieux. Si tu as toujours la meme exception avec ce code, c'est que la ligne 11 contient plus de 4 valeurs. Il faudrait ajouter ca dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("nb elts ligne 11 " +valeurs.get(11).size() + ", nb elts ligne 12 " + valeurs.get(12).size());

  18. #18
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Mercii beaucoup j'ai identifié ma bêtise!! Mon code fonctionne bien avec cette boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (int k = 1; k < valeurs.get(12).size(); k++){
    	        	System.out.println("Première valeur " +valeurs.get(12).get(k-1)+ " suivante est " + valeurs.get(12).get(k));
    	        	System.out.println("nb elts ligne 11 est:" +valeurs.get(11).size() + ", nb elts ligne 12 est:" + valeurs.get(12).size());
    	        	cmp1 = valeurs.get(12).get(k-1);
    	        	cmp2 = valeurs.get(12).get(k);
    	        	med1 = valeurs.get(11).get(k-1);
    	        	med2 = valeurs.get(11).get(k);
    En rajoutant le message, j'ai compris qu'en essayant de trouver l'erreur j'ai due changé dans mes données d'entrée, et j'avais en ligne 11 plus d'éléments qu'en ligne 12!!
    Et voilààà, merciii beaucoup

  19. #19
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,
    je crois que c´est simple,
    tu ne peux pas etre en train de parcourir la liste d´une part,
    et a l´interieur de la boucle tu fais une autre boucle pour supprimer cette liste la.

    Tu peux faire un truc 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
    16
     
    Collection<Integer> l = new ArrayList<Integer>();
        Collection<Integer> itemsToRemove = new ArrayList<Integer>();
        for (int i=0; i < 10; ++i) {
        l.add(new Integer(4));
        l.add(new Integer(5));
        l.add(new Integer(6));
        }
        for (Integer i : l)
        {
            if (i.intValue() == 5)
                itemsToRemove.add(i);
        }
     
        l.removeAll(itemsToRemove);
        System.out.println(l);
    Eric

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/01/2015, 22h41
  2. Réponses: 9
    Dernier message: 18/07/2013, 14h08
  3. Réponses: 5
    Dernier message: 07/02/2013, 12h36
  4. java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    Par john_wili dans le forum Struts 1
    Réponses: 3
    Dernier message: 29/03/2009, 09h42
  5. Erreur java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
    Par impossibeulman dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 07/08/2008, 15h18

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