Extraire le contenu d'un tableau [Résolu]

Messages postés
39
Date d'inscription
lundi 16 avril 2007
Dernière intervention
11 mai 2008
- - Dernière réponse : cs_jojolemariole
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
19 décembre 2016
- 24 avril 2008 à 23:34
Bonjour,





J’aurais
besoin d’un coup de main à mon problème :





J’ai un
tableau unidimensionnel qui contient trois valeurs redondantes, et j’aimerais
bien extraire chaque valeurs et le mettre dans un autre tableau,je m’explique :





String
tableau [] = {" nom ", "prenom ", "adresse " ,    // mon tableau principale






                                "nom1", " prenom1 ", "adresse1 " ;






                                 "nom2 ", " prenom2 ", "adresse2 " ;…..






                          .......... " nomN ", " prenomN ", " adresseN " }






 






Mainteneant,
j’aimerais extraire les infotmations de ce tableau et les mettre dans  trois autre tableaux : tab1, tab2 et tab3 tel que :





tab1 contient que les noms, tab2 contient que les prénoms et tab3 contient que les adresses.



Une idée? Merci d'avance.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
3
Merci
Salut:

String[] tableau = {...};

String[] firstNames = new String[tableau.length/3];
String[] lastNames = new String[tableau.length/3];
String[] addresses = new String[tableau.length/3];

for (int i = 0; i < tableau.length; ++i) {
    if ((i%3) == 0) {
       firstNames[i/3] = tableau[i];
    } else if ((i%3) == 1) {
       lastNames[i/3 + 1] = tableau[i];
    } else {
       addresses [i/3 + 2] = tableau[i];
    }
}

Merci Ombitious_Developper 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
19 décembre 2016
3
Merci
Il a fait une erreur d'étourderie je pense,

remplace le i/3 + 1 par i/3
remplace le i/3 + 2 par i/3

ou sinon, choisis ma solution ;), elle est meilleure lol

Merci cs_jojolemariole 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_jojolemariole
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
19 décembre 2016
3
Merci
Bon excuse moi si je t'ai paru prétentieux mais je t'assure que les tableaux ce n'est pas la mère à boire.

Et ça fonctionne très bien avec ma correction.

Evidemment quand je te disais :

"remplace par

noms[i] = tableau[3 * i];

pour les trois lignes ;) "

il fallait mettre :

noms[i] = tableau[3 * i];
prenoms[i] = tableau[3 * i + 1];
adresses[i] = tableau[3 * i + 2];

ça me semblait évident.

Maintenant c'est vrai que je préfère les collections aussi.

Merci cs_jojolemariole 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_jojolemariole
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
19 décembre 2016
0
Merci
On voit que tu débute car ça n'est pas vraiment un gros problème, je vais te proposer une solution sauf que je remplace
tes "tab1", "tab2" et "tab3" par des identifiants plus explicites, habitue-toi à faire ça. Ca rendra ton code plus lisible.



Possibilité :

int nbPersonnes = tableau.length / 3;

String[] noms = new String[nbPersonnes];
String[] prenoms = new String[nbPersonnes];
String[] adresses = new String[nbPersonnes];

for(int i = 0 ; i < nbPersonnes ; i++){
    noms[i] = tableau[3 * nbPersonnes];
    prenoms[i] = tableau[3 * nbPersonnes + 1];
    adresses[i] = tableau[3 * nbPersonnes + 2];
}

Cependant, n'oublie pas non plus que Java est un langage à objets. Donc je ne sais pas ce que tu veux faire avec ces personnes, mais je te suggère de créer une class Personne :

Avec les objets :

public class Personne {

  
    // attributs de ta classes (proprietes si tu veux)
   
    private String nom;
    private String prenom;
    private String adresse;

    // constructeur (methode particuliere qui permet de creer une instance
    // (exemplaire) de ta classe
   
    public Personne(String nom, String prenom, String adresse) {
       this.nom = nom;
       this.prenom = prenom;
       this.adresse = adresse;
    }

    // setters (methodes permettant de modifier les attributs de l'objet (instance))

    public void setNom(String nom) {
       this.nom = nom;
    }

    public void setPrenom(String prenom) {

       this.prenom = prenom;

    }

    public void setAdresse(String adresse) {

       this.adresse = adresse;

    }

    // getters (methodes permettant de lire les proprietes de l'objet)

    public String getNom() {
       return nom;
    }

    public String getPrenom() {
        return prenom;  
    }

    public String getAdresse() {
       return adresse;
    }

    // methode permettant de renvoyer une representation textuelle de ton instance
    // souvent pratique

    public String toString() {
       return "Je suis " + prenom + " " + nom + " et j'habite " + adresse;
    }

}

Voilà et du coup, le bout de code du dessus devient :

int nbPersonnes = tableau.length / 3;

Personne[] personnes = new Personne[nbPersonnes];


for(int i = 0 ; i < nbPersonnes ; i++) {
    personnes[i] = new Personne(
            tableau[3 * i + 0],
            tableau[3 * i + 1],
            tableau[3 * i + 2]);
}

Si tu as des questions, n'hésites pas.
  
Commenter la réponse de cs_jojolemariole
Messages postés
39
Date d'inscription
lundi 16 avril 2007
Dernière intervention
11 mai 2008
0
Merci
Salut,
Merci pour la rapidité de ta réponse "Ombitious_developper", j'ai essaayé ta méthode avec une petite classe main comme ceçi:

package tests;

public class TestTableau {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] tableau = {"nom", "prenom", "adresse",
                "nom1", "prenom1", "adresse1",
                "nom2", "prenom2", "adresse2"};

        String[] firstNames = new String[tableau.length/3];
        String[] lastNames = new String[tableau.length/3];
        String[] addresses = new String[tableau.length/3];

        for (int i = 0; i < tableau.length; ++i) {
            if ((i%3) == 0) {
               firstNames[i/3] = tableau[i];
            } else if ((i%3) == 1) {
               lastNames[i/3 + 1] = tableau[i];
            } else {
               addresses [i/3 + 2] = tableau[i];
            }
        }
        System.out.println(firstNames[0]);
        System.out.println(firstNames[1]);
        System.out.println(firstNames[2]);
        System.out.println(lastNames[0]);
        System.out.println(lastNames[1]);
        System.out.println(lastNames[2]);
        System.out.println(addresses[0]);
        System.out.println(addresses[1]);
        System.out.println(addresses[2]);

    }

}
et j'ai l'erreur suivante:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at tests.TestTableau.main(TestTableau.java:24)
La ligne 24 : addresses [i/3 + 2] = tableau[i]; (je crois que ca donne toujours  i >= 2, donc hors du tableau. )
Commenter la réponse de bensFouad
Messages postés
39
Date d'inscription
lundi 16 avril 2007
Dernière intervention
11 mai 2008
0
Merci
Salut,
Merci jojolemariole pour ta réponse, j'avoue qu je ne suis pas un expert en java ni un débutant non plus, juste je ne suis pas à l'aise avec les tableaux, j'essaye toujours de trouver une solution avec les collections, les noms,les prenom que j'ai mis c'est juste au titre d'exemple , mais merci comme meme pour la class Personne.
Commenter la réponse de bensFouad
Messages postés
39
Date d'inscription
lundi 16 avril 2007
Dernière intervention
11 mai 2008
0
Merci
Resalut jojolemariole,
ta methode ne marche pas :
int nbPersonnes = tableau.length / 3;
A cette ligne : noms[i] = tableau[3 * nbPersonnes]; (n'oubli pas q'un tableau commençe à 0 !!!!)
Commenter la réponse de bensFouad
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
19 décembre 2016
0
Merci
oups

moi aussi j'ai fait une erreur d'étourderie

remplace par

noms[i] = tableau[3 * i];

pour les trois lignes ;)

et oui je sais qu'un tableau commence à l'index 0. lol.
Commenter la réponse de cs_jojolemariole
Messages postés
39
Date d'inscription
lundi 16 avril 2007
Dernière intervention
11 mai 2008
0
Merci
Désolé, mais ça marche pas non plus, ca retourne que le premier élément (nom, nom1,nom2),ca prouve que les tableau c'est pas facile parfois, je préfere la solution de "Ombitious_developper" qui est plus facile, Merci comme meme.
Commenter la réponse de bensFouad

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.