Supprimer "0" d'un tableau

Résolu
Conurbateur Messages postés 2 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 4 avril 2009 - 4 avril 2009 à 16:33
Conurbateur Messages postés 2 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 4 avril 2009 - 4 avril 2009 à 22:36
Bonjour,

Je cherche à créer une méthode pour supprimer les "0" dans un tableau, j'utilise donc cette méthode :

import java.util.*;
public class Test {

    public static int[] SupprimerZero(int[] tab)  {
        Vector v = new Vector();
        for(int i=0; i<tab.length; i++){
            if(tab[i] != 0){
                v.add(i, tab[i]);
            }
        }
        int[] tab3 = new int[v.size()];
        for(int i=0; i<tab3.length; i++){
            tab3[i] = (Integer)v.get(i);
        }
        return(tab3);

    }
}
Seulement quand je l'appelle dans mon main avec " int[] tableau4 = Test.SupprimerZero(tableau3);" le tableau3 ayant pour valeur [0 0 1 1 5 6] et que je l'exécute il m'affiche :

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 22 > 0
    at java.util.Vector.insertElementAt(Vector.java:551)
        at java.util.Vector.add(Vector.java:760)
        at Test.SupprimerZero(Test.java:16)
        at Abstract.main(Abstract.java:67)

Le logiciel m'indique que l'erreur vient de "v.add(i, tab[i]);" Mais je ne comprend pas d'où vient cette erreur. Si quelqu'un pouvait m'aider à résoudre ce problème :)

Merci.
Cordialement,
Conurbateur.

2 réponses

FoetusIX Messages postés 7 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 5 avril 2009
4 avril 2009 à 19:20
salut je suis FoetusIX voila ma proposition
public class supp0tab {

   
    static int SupprimerZero(int[] tab)  {
        int i=0,h=0;
        for(i=0; i<tab.length-h;i++){
            i=i-h;
            if(tab[i]==0){
               
                for(int j=i+1;j<tab.length-h;j++)
                    tab[j-1]=tab[j];
                h+=1;
            }
           
        }
        return tab.length-h;
           
}
    public static void main(String[] args) {
        int[] t = new int[4];
        int c=0;
        for(int i=0;i<4;i++)
            t[i]=0;
        t[0]=1;
        t[1]=0;
        t[2]=0;
        t[3]=3;
        c=SupprimerZero(t);
        int[] t2 =new int[c];
        for(int i=0;i<c;i++)
        {
            t2[i]=t[i];
            System.out.println(t2[i]);
        }
    }

}
j'éspére que je résout ton probleme.
3
Conurbateur Messages postés 2 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 4 avril 2009
4 avril 2009 à 22:36
Oui merci bien amis programmeur :)

Bonne soirée !
0
Rejoignez-nous