Supprimer "0" d'un tableau [Résolu]

Conurbateur 2 Messages postés mercredi 25 mars 2009Date d'inscription 4 avril 2009 Dernière intervention - 4 avril 2009 à 16:33 - Dernière réponse : Conurbateur 2 Messages postés mercredi 25 mars 2009Date d'inscription 4 avril 2009 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
FoetusIX 7 Messages postés vendredi 3 avril 2009Date d'inscription 5 avril 2009 Dernière intervention - 4 avril 2009 à 19:20
3
Merci
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.

Merci FoetusIX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de FoetusIX
Conurbateur 2 Messages postés mercredi 25 mars 2009Date d'inscription 4 avril 2009 Dernière intervention - 4 avril 2009 à 22:36
0
Merci
Oui merci bien amis programmeur :)

Bonne soirée !
Commenter la réponse de Conurbateur

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.