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

Java Discussion :

constructeur et List: demande aide


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 20
    Par défaut constructeur et List: demande aide
    Bonjour,

    Je rencontre un problème dans mon projet.
    On me demande de créer un constructeur intitulé Stock qui reçoit en paramètre plusieurs objets de type Tile (domino).
    Selon que la valeur du domino est négatif ou positif, le domino est rangé par le constructeur parmi deux listes:
    -sushiList (qui reçoit les dominos de valeur positive),
    -fishboneList(qui reçoit les dominos de valeur négative)

    C'est le constructeur qui place les dominos dans la bonne liste.
    Quand je test, j'ai une erreur de type "NullPointerException". Je ne comprend pas pourquoi?
    Dans ma classe Tile, j'ai une méthode getValue, qui me retourne la valeur du Tile(valeur= entier positif ou négatif)

    Quelqu'un sait m'aider à comprendre ou se trouve mon erreur(lexicale)?

    Merci
    Attila


    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
    public class Stock {
    //=========================================================================
        //ATTRIBUTS
     
        private List<Tile> sushiList;
        private List<Tile> fishboneList;
     
        //=========================================================================
        //CONSTRUCTOR
     
     
        public Stock(Tile... tile) {
            for (int i = 0; i < tile.length; i++) {
                if (tile[i].getValue() > 0) {
                    this.sushiList.add(tile[i]);                        //Ici le test m'indique une erreur à ce niveau!!
                } else {
                    this.fishboneList.add(tile[i]);
                }
            }
     
        }

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    En Java lorsque tu souhaites utiliser une classe, il te faut en premier lieu créer une instance de cette classe. Pour ce faire on utilise le mot clé new.

    Or dans ton code on voit bien tu tu déclares des listes de Tile, mais à aucun moment tu ne crées d'instance.

    Il te suffit donc simplement de créer un instance dans ton constructeur avant de t'en servir.

    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
    public class Stock {
    //=========================================================================
    //ATTRIBUTS
    
    private List<Tile> sushiList;
    private List<Tile> fishboneList;
    
    //=========================================================================
    //CONSTRUCTOR
    
    
    public Stock(Tile... tile) {
    
    
      sushiList = new ArrayList();    // Ici tu crées une instance de tes listes
      fishboneList= new ArrayList();
    
    
      for (int i = 0; i < tile.length; i++) {
        if (tile[i].getValue() > 0) {
         this.sushiList.add(tile[i]); //Ici le test m'indique une erreur à ce niveau!!
        } else {
      this.fishboneList.add(tile[i]);
     }
    }
    
    }
    Petite précision ici, j'ai écris new ArrayList() et non pas new List() car List est une interface et non pas une classe. Or il n'est pas possible de créer une instance d'une interface.

    A la place j'ai utilisé la classe ArrayList (mais il y en a d'autres) qui implémente cette interface, ce qui me permet donc de créer une instance.

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Il ne suffit pas de déclarer la liste avec : private List<Tile> sushiList;
    Il faut aussi l'instancier : sushiList = new ArrayList<Tile>();

    EDIT : Grillé par Nico02 !
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 20
    Par défaut
    Bonjour,

    Oui, merci. Effectivement j'avais oublier d'instancier mes listes.
    Maintenant ça marche mieux!
    Merci

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

Discussions similaires

  1. [PHP-JS] Débutant demande aide liste php
    Par bcbgtn dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2007, 11h24
  2. Réponses: 2
    Dernier message: 11/03/2006, 19h34
  3. demande aide pour XML/XSL
    Par Jarod51 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/01/2006, 19h10
  4. Résolution Sudoku, demande aide...
    Par Alain15 dans le forum C++
    Réponses: 25
    Dernier message: 02/01/2006, 15h29
  5. débutante demande aide
    Par youna dans le forum Langage
    Réponses: 1
    Dernier message: 04/10/2005, 11h30

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