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

avec Java Discussion :

Aide pour ArrayList<>


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Aide pour ArrayList<>
    Bonjour à tous !

    J'ai un TP en Java à rendre pour mon école mais je suis débutant et je ne vois pas beaucoup comment faire. (je ne comprends pas beaucoup le sujet).

    Voici la consigne :
    J'ai deux classes à coder (Liste et Pile)

    Pour la classe Liste, le rôle des méthodes est :
    • Premier() : sans argument, se positionne sur le premier élément de la liste
    • Dernier() : sans argument, se positionne sur le dernier élément de la liste
    • Suivant() : sans argument, retourne l’élément suivant de celui sur lequel on est positionné
    • Supprimer() : sans argument, supprime l’élément sur lequel on est positionné
    • Ajouter() : en argument un objet générique de type Object à ajouter dans l’élément sur lequel on
    est positionné

    Pour la classe Pile, le rôle des méthodes est :
    • Empiler() : en argument un objet générique de type Object à empiler
    • Depiler() : sans argument, retourne l’objet générique de type Object à dépiler

    1. Dans un même package, codez chacune des deux classes dans son propre fichier .java correctement nommé. Pensez à ajouter les attributs, constructeurs et autres méthodes qui vous semblent utiles.

    -Que veut dire se positionner ?
    -Devrais-je utiliser un itérateur ou pas besoin ?

  2. #2
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    effectivement ça vaudrait le coup d'avoir des précisions.
    on a un objet qui stocke des éléments et qui maintient un champ élément courant
    mais alors:
    - comment obtenir cet élément courant? (il n'est pas précisé si premier ou dernier retourne un élément). Or on n'a que suivant() ce qui n'est pas exactement pratique si on veut consulter le premier élément...
    - ensuite quand on supprime l'élément courant où se positionne t-on ensuite? il y a des cas aux limites où il va falloir se poser la question (exemple: on est au dernier alors c'est le précédent? mais alors si on est au premier?)
    - ajouter DANS l'élement courant? ça veut dire remplacer l'objet actuel dans la liste? mais comment ajouter en FIN de liste (ce qui semblerait utile)?
    Bref il faudrait le texte exact des spécifications.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci pour votre réponse rapide.
    En effet le sujet n'est pas clair... Au début j'avais fais un code qui retournait le premier et le dernier élément etc.
    Là j'ai créer une variable protected int position = 0; et je veux donc que cette variable soit la position à l'instant t.
    donc dans mon code pour Premier(); Dernier(); et Suivant(); j'ai fais comme ceci :
    (j'ai oublié de dire que je faisais une ArrayList<Object>)
    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
     
    //Se place sur le premier élément
        public void Premier(){
            tableauObjets.get(Position);
            System.out.println(tableauObjets.get(Position));
        }
    //Se place sur le dernier élément
        public void Dernier(){
            Position = tableauObjets.size()-1;
            tableauObjets.get(Position);
            System.out.println(tableauObjets.get(Position));
        }
        //Affiche l'élément suivant sur lequel on est positionné
        public Object Suivant(){
            Position ++;
            System.out.println(tableauObjets.get(Position));
            return tableauObjets.get(Position);
        }
    Pensez-vous que c'est une bonne méthode ?

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    juste une remarque préliminaire: essaye de respecter les conventions d'écriture : les méthodes et le champ position devraient commencer par une minuscule.
    Ceci dit:
    - selon toi le sens de premier() serait de donner la position courante...
    - qu'est-ce qui se passe si tu fais successivement dernier() et suivant() ???
    - pourquoi tu fais plusieurs appels à get dans la même méthode?
    - tu parles d'une arrayList puis ensuite dans le code d'un tableau d'objets... on fait quoi?

    * il serait plus logique que les méthodes premier() et dernier() renvoient l'objet à la position demandée.
    * si la liste est vide on rend quoi?
    * de même peut-il y avoir des valeurs null s'il y a un objet manquant
    * de même suivant()peut rendre null s'il n'y a plus rien? (ou exception?)... on fait quoi?
    * toujours la question du sens de ajouter()...
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ok merci du conseil

    -Non pardon j'ai oublié de dire que j'ai initialisé mon protected int Position = 0; c-à-d qu'il retourne l'élément à l'index 0
    -Si je fais dernier et suivant j'ai une erreur OutOfBounds ducoup cela parcoure bien la liste normalement ?
    -j'ai finallement fais une méthode Afficher() pour afficher la valeur
    -Yes j'avais commencé par un tableau d'objets mais j'ai décidé de faire une ArrayList j'ai oublié de changer...

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai fais ça pour la classe Liste :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    public class Liste {
     
        private ArrayList<Object> maListeObjets = new ArrayList<Object>();
        protected int position;
     
        //Constructeur de Liste
        public Liste(){
            maListeObjets.add(1);
            maListeObjets.add(2);
            maListeObjets.add(3);
            maListeObjets.add(4);
            maListeObjets.add(5);              
        }
        //Se place sur le premier élément
        public void premierElement(){
            position = 0;
            //maListeObjets.get(position);
            afficherElement();
     
        }
        //Se place sur le dernier élément
        public void dernierElement(){
            position = maListeObjets.size()-1;
            //maListeObjets.get(position);
            afficherElement();
     
        }
        //Affiche l'élément suivant sur lequel on est positionné
        public Object elementSuivant(){
            position++;
            afficherElement();
            return maListeObjets.get(position);
        }
        //Supprime l'élément sur lequel on est positionné
        public void supprimerElement(){    
            maListeObjets.remove(position);
        }
        //Ajouter une valeur
        public void ajouterElement(Object objet){
            maListeObjets.add(position, objet);
        }
        //Affiche la valeur
        public void afficherElement(){
            System.out.println(maListeObjets.get(position));
        }
    }
    Et ça dans mon main :

    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){
     
            Liste maListe = new Liste();
     
            maListe.premierElement();
            maListe.elementSuivant();
            maListe.dernierElement();
            maListe.ajouterElement(6);
            maListe.dernierElement();
    }
    Donc logiquement dans ma tête je voudrai afficher : 1 2 5 6 sauf que dans ma console s'affiche 1 2 5 5.
    Je ne comprends pas mon erreur... Sûrement dans ma méthode ajouterElement ?

Discussions similaires

  1. Aide pour un sudoku avec ArrayList et sauvegarde des placements
    Par Rashlack dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 07/12/2016, 02h27
  2. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  3. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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