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

Collection et Stream Java Discussion :

problème avec affichage d'un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut problème avec affichage d'un tableau
    Bonjour,

    j'essaie d'afficher à l'écran le contenu d'un tableau.
    Voici le code pour la première classe qui implémente un tableau pour accueillir le matériel informatique disponible.
    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
     
    package materiel;
     
    public class Equipement {
            int indice=0;
            //déclaration et création d'un tableau
            Materiel liste[]=new Materiel[50];
     
            //constructeur
            Equipement(){}
     
            //méthode pour ajouter un objet à la liste
            public void ajouter(Materiel m){
                liste[indice]= m;
                indice++;
            }
     
            //méthode pour accéder aux éléments de la liste
            public Materiel iemeElement(int i){
                return liste[i];
            }
     
            }

    Voici la classe pour tester la précédente
    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
     
    package materiel;
     
    public class TestEquipement {
        public static void main (String [] args){
            Equipement equipo=new Equipement();
            equipo.ajouter(new Ordinateur("ASUS", "540"));
            equipo.ajouter(new MP3("SONY", "M100"));
            equipo.ajouter(new AppareilPhoto("SAMSUNG", "S510"));
            equipo.ajouter(new Videoprojecteur("NEC", "N800"));
     
     
            Materiel elemento;
            elemento=equipo.iemeElement(3);
            System.out.println(elemento);
        }
     
    }
    A l'affichage j'obtiens par exemple:
    materiel.Videoprojecteur@a90653

    Qu'est-ce qui ne marche pas?
    Merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu affiches le pointeur de l'objet et non ses éléments. Tu dois parcourir l'objet et afficher les éléments un à un.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    D'abord, évite de réinventer la route. Ta classe Equipement gère une liste d'éléments, alors autant directement utiliser un List<Materiel>:
    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
    package materiel;
     
    public class TestEquipement {
        public static void main (String [] args){
            List<Materiel> equipo=new ArrayList<Materiel>();
            equipo.add(new Ordinateur("ASUS", "540"));
            equipo.add(new MP3("SONY", "M100"));
            equipo.add(new AppareilPhoto("SAMSUNG", "S510"));
            equipo.add(new Videoprojecteur("NEC", "N800"));
     
     
            Materiel elemento;
            elemento=equipo.get(3);
            System.out.println(elemento);
        }
     
    }
    Ensuite, si tu veux afficher un MAteriel comme un String, tu dois surcharger sa méthode 'toString()' qui est appelée implictement quand tu fait System.out.println(elemento);

  4. #4
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    [QUOTE=tchize_;3319966]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
            List<Materiel> equipo=new ArrayList<Materiel>();
    QUOTE]

    Et qu'est-ce qu'elle apporte en plus cette ligne?

  5. #5
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Donc, si je fait une ArrayList je n'ai pas besoin de faire une classe "Equipement"?

  6. #6
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    J'ai compris pour Array.
    Mais je n'arrive toujours pas à afficher son contenu.

  7. #7
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Soit tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(elemento.getMarque() + " - " + elemento.getModele()));
    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    System.out.println(elemento);
     
     
    //En ajoutant dans Materiel la méthode :
    private static final String SEPARATEUR = " - ";
    public String toString(){
        return marque + SEPARATEUR  + modele;
    }
    Dans les 2 cas tu auras :
    "SONY - M100"

  8. #8
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Merci morph41, mais ce que je veux c'est afficher ce qui se trouve à l'indice 2, par exemple.
    Comment faire?

  9. #9
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Citation Envoyé par bandit_debutant Voir le message
    Merci morph41, mais ce que je veux c'est afficher ce qui se trouve à l'indice 2, par exemple.
    Comment faire?
    tchize_ t'a déja donné la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        public static void main (String [] args){
            List<Materiel> listeMateriels=new ArrayList<Materiel>();
            listeMateriels.add(new Ordinateur("ASUS", "540"));
            listeMateriels.add(new MP3("SONY", "M100"));
            listeMateriels.add(new AppareilPhoto("SAMSUNG", "S510"));
            listeMateriels.add(new Videoprojecteur("NEC", "N800"));
     
            Materiel element = listeMateriels.get(2);
            System.out.println(element); // cette ligne va appeler element.toString(), méthode de la classe Materiel, décrite dans mon exemple précédent
        }

  10. #10
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Merci encore. Maintenant ça marche, mais j'ai quand même deux remarques à faire.

    vous proposez la ligne suivante:

    List<Materiel> listeMateriels=new ArrayList<Materiel>();

    et ça ne marche pas. Il préfère celle-là:

    ArrayList listeMateriels=new ArrayList<Materiel>();


    Pour l'affichage, vous proposez:

    Materiel element = listeMateriels.get(2);
    System.out.println(element);

    et ça ne marche pas non plus. Par contre ça, ça marche:

    Materiel element=(Materiel) listeMateriels.get(2);
    System.out.println(element)

    ???????????????????

  11. #11
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    La 2è erreur découle de la 1ère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Materiel> listeMateriels=new ArrayList<Materiel>();
    Qu'entends-tu par "ça ne marche pas"? tu compiles bien avec le jdk 1.5? si c'est une version antérieur, il faut alors enlever les typages : <>

  12. #12
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par morph41 Voir le message
    La 2è erreur découle de la 1ère.

    Qu'entends-tu par "ça ne marche pas"? tu compiles bien avec le jdk 1.5? si c'est une version antérieur, il faut alors enlever les typages : <>
    Je ne sais pas quelle version est installée sur le poste, il n'est pas à moi. Je travaille avec NetBeans 6.1 et il souligne en rouge quend ça ne lui plaît pas.

  13. #13
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    De toute façon ce n'est pas trop grave puisque tu as su faire en sorte que ça compile et que le résultat obtenu soit bon.

  14. #14
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Merci beaucoup pour tous les conseils et le temps passé à m'aider.

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    T'avais probablement juste oublié de faire l'import de java.util.List dans ton code (d'ou le list en rouge), quand t'as remplacé en arraylist en retirant le typage générique, t'as perdu la possibilité d'avoir des get(...) typé , d'ou le besoin d'un typcasting explicite. Pour le "çà marche pas", le message d'erreur (que netbean to fourni probalbement en hint quand tu pose le curseur sur l'erreur) serait utile pour t'orienter

  16. #16
    Membre du Club Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    T'avais probablement juste oublié de faire l'import de java.util.List dans ton code (d'ou le list en rouge
    En effet, j'avais juste fait import java.util.ArrayList.

    Pour le "çà marche pas", le message d'erreur (que netbean to fourni probalbement en hint quand tu pose le curseur sur l'erreur) serait utile pour t'orienter
    D'habitude je les regarde, mais cette fois-ci ça me dépassait.

    Merci à vous tous

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

Discussions similaires

  1. Problème avec affichage de tableau
    Par hedibox dans le forum JSF
    Réponses: 1
    Dernier message: 30/08/2013, 12h03
  2. Problème avec affichage contenu d'un tableau
    Par demcoul dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 08/08/2008, 10h08
  3. Problème avec PtInRegion et un tableau dynamique
    Par mduse dans le forum Langage
    Réponses: 2
    Dernier message: 06/12/2005, 09h29
  4. Problème avec affichage d'une table modifiée
    Par auriolbeach dans le forum Access
    Réponses: 6
    Dernier message: 31/10/2005, 15h45
  5. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 12h00

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