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

Langage Java Discussion :

[débutant] Aide toArray()


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Points : 73
    Points
    73
    Par défaut [débutant] Aide toArray()
    Bonjour,

    Je débute depuis déjà quelque mois, et je em suis lancé dans un programme qui calculerais selon le theoreme de Horner...
    Enfin bref, J'ai un tableau String et j'aimerais mettre certain élément de se tableau dans un autre, mais puisque je ne sais pas combien il y aura d'élement à mettre je pense utiliser un Arraylist.
    Puisque cela change completement des tableau, je suis un peu, beaucoup perdu ^^.
    Donc j'aimerais savoir si vous pouviez m'aider à transferer toutes les donné d'un tableau String en ArrayList et moi je n'aurais plus qu'à supprimer les index que je ne veut pas.

    Merci d'avance,

    rXp<!>

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Tu pourrais tout aussi bien faire un IF qui verifie la taille physique de ton tableau par rapport à la taille logique.

    Il compare le nombre d'éléments du tableau par rapport a la longueur de ton tableau "tabeau.length".

    Si jamais il est complet tu fais un tableau temp [tableau.length*2] et tu transfert tous les éléments avec un For.

    C'est peut-être pas le plus efficace mais c'est assez pratique.

    Enfin voilà, sinon pour tes array regarde dans la doc de Java, c bien expliqué même si c'est en anglais :p

    ++ Bonne chance

  3. #3
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    20cent > Il me semble que ce que tu décris c'est comme cela que fonctionne une ArrayList donc pourquoi réinventer la roue ?

    rxpch > pour convertir ton tableau en arraylist : rien de plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Type [] monTableau= ...
    List maListe=new ArrayList(monTableau.length);
    for(int i=0;i<monTableau.length;i++){
       maList.add(monTableau[i]);
    }

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Points : 73
    Points
    73
    Par défaut
    Je te remerci j'ai plus compris le but des arraylist grâce a vous

    Maintenant j'ai une erreur qui s'affiche :
    Exception in thread "main" java.lang.NumberFormatException: For input string: "x"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)

  5. #5
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Montre nous ton code parce que sans c'est compliqué. Cette exception est déclenché parce que tu utilise d'utiliser la chaine "x" à un endroit ou tu devrait avoir un nombre.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Points : 73
    Points
    73
    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
     private static double[] StringSplitChiffre(String sPremierPolynome){
            String[] sPremierPolynomeTableau = sPremierPolynome.split(" ");
            //convertir sPremierPolygoneTableau en arraylist
            List aTableauChiffre=new ArrayList(sPremierPolynomeTableau.length);
            for(int i=0;i<sPremierPolynomeTableau.length;i++){
                if(sPremierPolynomeTableau[i]!="+" && sPremierPolynomeTableau[i].toLowerCase()!="x"){
                    aTableauChiffre.add(sPremierPolynomeTableau[i]);
                } else{
     
                }
            }
     
            //transformer le ARRAY en String       
             String sTableauChiffre [] = (String []) aTableauChiffre.toArray (new String [0]);
             //le string en double
             double tableauChiffre[]=new double [sTableauChiffre.length];
            for(int i = 0;i<=sTableauChiffre.length;i++){
                tableauChiffre[i] = Double.parseDouble(sTableauChiffre[i]);
            }
            return tableauChiffre;
        }

  7. #7
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Apparement la chaine "x" est entrée dans ta liste et donc quand tu essaye de la caster en Double ça plante tu devrait mettre plutot ça pour vérifier que ce n'est ni un x ni un +
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(!sPremierPolynomeTableau[i].equals("+") && !sPremierPolynomeTableau[i].toLowerCase().equals("x")){
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Points : 73
    Points
    73
    Par défaut
    Oui c'était bien cela, mais maintenant il y a la fameuse erreur :
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at horner.Main.StringSplitChiffre(Main.java:65)
    at horner.Main.main(Main.java:34)
    Java Result: 1

    Mais je ne trouve pas le problème dans la boucle là.

  9. #9
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    La ligne 65 ça correspond à quoi?
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Points : 73
    Points
    73
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                tableauChiffre[i] = Double.parseDouble(sTableauChiffre[i]);

  11. #11
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Tu as une petite erreur dans ton for tu devrait avoir un < et pas un <=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int i = 0;i<sTableauChiffre.length;i++){
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Points : 73
    Points
    73
    Par défaut
    Rebonjour,

    Mon code est finis mais il persiste une erreur que je n'ai jamais vu :
    Exception in thread "main" java.lang.ArrayStoreException
    at java.lang.System.arraycopy(Native Method)
    at java.util.ArrayList.toArray(ArrayList.java:304)
    at horner.Main.Coefficient(Main.java:99)
    at horner.Main.main(Main.java:34)
    Voici la méthode d'ou vient l'érreur :
    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
        private static double[] Coefficient(double[]tableauChiffre){
     
            List aTableauCoefficient=new ArrayList(tableauChiffre.length);
            // si la longueur du tableau est pair
            if(tableauChiffre.length%2 == 0){
                for(int i=0;i<tableauChiffre.length;i++){
                    aTableauCoefficient.add(tableauChiffre[i]);
                    i++;
                }
                //sinon
            } else{
                for(int i=0;i<tableauChiffre.length;i++){
                    aTableauCoefficient.add(tableauChiffre[i]);
                    i++;
                }
                aTableauCoefficient.add(tableauChiffre[tableauChiffre.length-1]);
            }
            //transformer le ARRAY en String
            String sTableauCoefficient [] = (String []) aTableauCoefficient.toArray(new String [0]);
                    //le string en double
            double tableauCoefficient[]=new double [sTableauCoefficient.length];
            for(int i = 0;i<sTableauCoefficient.length;i++){
                tableauCoefficient[i] = Double.parseDouble(sTableauCoefficient[i]);
            }
            return tableauCoefficient;
        }
    Et voici la ligne 99 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String sTableauCoefficient [] = (String []) aTableauCoefficient.toArray(new String [0]);
    Je suis un peu perdu ^^

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    pour ton erreur java.lang.ArrayStoreException je suis tombé sur :

    http://www.developpez.net/forums/sho...d.php?t=340605

    en gros :

    vive --> javadoc :

    Thrown to indicate that an attempt has been made to store the wrong type of object into an array of objects. For example, the following code generates an ArrayStoreException:

    Object x[] = new String[3];
    x[0] = new Integer(0);
    Object[] toArray(Object[] a)
    Returns an array containing all of the elements in this list in the correct order; the runtime type of the returned array is that of the specified array.

    du coup je me dit que c'est par-ce-que ton tableau aTableauCoefficient est un tableau de double et que tu demande un tableau de String et que java ne transforme pas implicitement tes double en String ? ... à verifier je ne connais pas trop.

  14. #14
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Oui c'est bien ça. Tu essaye de faire un toArray vers un tableau de String d'une liste qui contient des doubles. Il faut que les 2 types soit identiques.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Points : 73
    Points
    73
    Par défaut
    Oui je comprend, je dois le mettre directement en double :
    //transformer le ARRAY en double
    double tableauCoefficient [] = new double [aTableauCoefficient.size()];
    for(int i = 0;i<tableauCoefficient.length;i++ ){
    tableauCoefficient[i] = aTableauCoefficient.get(i);
    }
    Mais quand j'essaie par exemple avec la technique ci-dessus il me dit que j'ai besion d'un tableau double, alors pour l'instant mes types ne sont pas convertibles.
    Pourquoi ? tableauCoefficient est bien un tableau double non ?

  16. #16
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    tu utilises la syntaxe de méthode ( () ) à la place d'une syntaxe d'index de tablau ( [] ).

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    tu utilises la syntaxe de méthode ( () ) à la place d'une syntaxe d'index de tablau ( [] ).
    ... ah oui je pense que tu as cru que aTableauCoefficient était un tableau comme son nom l'indiquait c'set en fait une instance de ArrayList.

    Qui d'ailleur retourne un Object :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //transformer le ARRAY en double
    double tableauCoefficient [] = new double [aTableauCoefficient.size()];
    for(int i = 0;i<tableauCoefficient.length;i++ ){
    tableauCoefficient[i] = aTableauCoefficient.get(i);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //transformer le ARRAY en double
    double tableauCoefficient [] = new double [aTableauCoefficient.size()];
    for(int i = 0;i<tableauCoefficient.length;i++ ){
    tableauCoefficient[i] = (double)aTableauCoefficient.get(i);
    }
    si c'ettait bien l'erreur ?

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Points : 73
    Points
    73
    Par défaut
    Non, les types sont toujours inconvertibles.

Discussions similaires

  1. [VBA-E][débutant]aide pour macro sous excel
    Par julyBL dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/06/2006, 22h42
  2. [Débutant] Aide sur la conception
    Par E2EK1EL dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 08h38
  3. Débutant: Aide avec nombre Armstrong
    Par D3V1L J4M dans le forum C++
    Réponses: 5
    Dernier message: 31/10/2005, 11h35
  4. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 17h16
  5. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59

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