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 :

java.NullpointerException sur tableau en Java


Sujet :

avec Java

  1. #1
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Août 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Août 2018
    Messages : 14
    Par défaut java.NullpointerException sur tableau en Java
    bonjour les amis j'ai un problème au niveau de cette ligne " tab1[6].marquerUnBut(); " l'erreur est de type (java.Nullpointerexception)

    s'il y a qeulqu'un qui pourrais m'aider merci par avance voici le code complet de la classe en question:

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    import java.util.Scanner;
     
    public class Exercie{
     
        public static void main(String[] args) {
     
            Footballeur [] tab1;
     
            Footballeur [] tab2;
     
            Equipe e1=new Equipe("Fc barcelone","rouge");
     
            Equipe e2=new Equipe("Real madrid","Blanc");
     
            for(int i=0;i<=11;i++){
     
                Scanner sc = new Scanner(System.in);
     
                System.out.println("Veuillez saisir un nom de footballeur de l'equipe invitante :");
     
                String str = sc.nextLine();
     
                Footballeur f1=new Footballeur(str);
     
                e1.ajoutJoueur(f1);
     
            }
     
            for(int j=0;j<=11;j++){
     
                Scanner sc = new Scanner(System.in);
     
                System.out.println("Veuillez saisir un nom de footballeur  de l'equipe invitée :");
     
                String str = sc.nextLine();
     
                Footballeur f1=new Footballeur(str);
     
                e2.ajoutJoueur(f1);
     
            }
     
            Match m1=new Match(e1,e2);
     
            tab1=e1.getTabJoueurs();
     
            tab2=e2.getTabJoueurs();
     
            e1.setTabJoueurs(tab1);
     
            tab1[6].marquerUnBut();
     
            e2.setTabJoueurs(tab2);
     
            tab2[2].encaisserUnCartonJaune();
     
            tab2[2].encaisserUnCartonJaune();
     
            m1.retournerGagnant();
     
        }
     
    }

  2. #2
    Invité de passage
    Femme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 1
    Par défaut
    Bonjour,

    En fait ton tableau est vide. Il n’a ni taille, ni objet contenu. Alors lorsque tu appelles ta méthode (certainement présente dans ta classe Footballeur), la fonction "footballeur.mettreUnBut()" déclenche un nullPointerException soit en language courant : il n’y a aucun objet désigné dans ton tableau ayant le type Footballeur en mesure d’effectuer cette méthode de la classe Footballeur.

    Il faut donc initialiser le tableau Footballeur [] tab1 = new Footballeur [nombre d’éléments]{Joueur1, Joueur2, ...., ´ nJoueur };

    Je crois que c’est ce que tu as voulu faire par (e.getTabJoueurs()) mais je ne vois pas de TabJoueurs !

  3. #3
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Août 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Août 2018
    Messages : 14
    Par défaut
    Merci pour ta reponse mais le tabJoueurs c'est un tableau de footballeur et ils est present dans la classe Equipe.
    voici le code des deux classes Equipe et Footballeur:

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    public class Equipe {
        private String nom;
        private String couleurMaillot;
        private Footballeur [] tabJoueurs;
        private int nombreFootballeur;
     
        public Equipe(String nom, String couleurMaillot) {
            this.nom = nom;
            this.couleurMaillot = couleurMaillot;
            this.tabJoueurs= new Footballeur[19];
            this.nombreFootballeur=0;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public String getCouleurMaillot() {
            return couleurMaillot;
        }
     
        public void setCouleurMaillot(String couleurMaillot) {
            this.couleurMaillot = couleurMaillot;
        }
     
        public Footballeur[] getTabJoueurs() {
            return tabJoueurs;
        }
     
        public void setTabJoueurs(Footballeur[] tabJoueurs) {
            this.tabJoueurs = tabJoueurs;
        }
     
        public int getNombreFootballeur() {
            return nombreFootballeur;
        }
     
        public void setNombreFootballeur(int nombreFootballeur) {
            this.nombreFootballeur = nombreFootballeur;
        }
     
       public boolean estPlein(){
           int cpt=tabJoueurs.length;
           if(cpt==20) return true;
           else return false;
       }
     
       public void ajoutJoueur(Footballeur j){
           boolean test=estPlein();
           if(test==false){
             int i=tabJoueurs.length; 
             tabJoueurs[i-1]=new Footballeur(nom);
           }
           else System.out.println("le tableau est plein on ne peut pas y ajouter des nouveux joueurs");
       }
     
       public int calculerNombreTotalDeButs(){
           int total=0;
           for(int i=0;i<tabJoueurs.length;i++){
               total=total+tabJoueurs[i].getNombre_buts();
           }
           return total;
       }
    }
    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
    48
    49
    50
    51
    52
    53
    54
    55
    public class Footballeur {
        private String nom;
        private int nombre_buts;
        private int cartons;
     
        public Footballeur(String nom) {
            this.nom = nom;
            this.nombre_buts=0;
            this.cartons=0;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public int getNombre_buts() {
            return nombre_buts;
        }
     
        public void setNombre_buts(int nombre_buts) {
            this.nombre_buts = nombre_buts;
        }
     
        public int getCartons() {
            return cartons;
        }
     
        public void setCartons(int cartons) {
            this.cartons = cartons;
        }
     
        public void marquerUnBut(){
            nombre_buts++;
            System.out.println(nom+" a marqué un but");
        }
     
        public void encaisserUnCartonJaune(){
            if (this.cartons<2){
                if(this.cartons==0){
                    System.out.println("premier carton jaune pour "+nom);
                    cartons++;
                }
                else{
                    System.out.println("deuxieme carton jaune pour "+ nom + ",footballeur exclu");
                    //il faute rendre le nombre de cartons a 0 pour la prochaine fois 
                    cartons=0;
                }
            }
        }
     
    }

  4. #4
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 486
    Billets dans le blog
    5
    Par défaut
    Tu oublie d'initialiser les valeurs des tableaux.
    En premier lieu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Footballeur [] tab1 = new Footballeur[11];
     
    Footballeur [] tab2 = new Footballeur[11];
    là, je recommande plutôt une liste que des tableaux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<Footballeur> tab1 = new ArrayList<>();
     
    List<Footballeur> tab2 = new ArrayList<>();
    Ensuite, il faut donner les valeurs.
    Cas du tableau:
    Ou dans l cas de la liste:
    Ensuite, j'ai également des remarques diverses.

    La première est que l'information est en double. Dans l'objet Equipe, ainsi que dans tab1 (première équipe) ou tab2 (seconde équipe).
    L'information suffit dans la première équipe.

    Ensuite, si tu veux associer un numéro à un joueur, l'utilisation d'une Map ( https://docs.oracle.com/javase/8/doc.../util/Map.html ) peut être plus adapté.

  5. #5
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Août 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Août 2018
    Messages : 14
    Par défaut
    merci infiniment pour ta réponse,mais concernant le choix de la structure tableau c'est l’énoncé de l'exercice qui m'a obligé d'utiliser un tab,ensuite j'ai initialisé le tab1 et tab2 (comme tu l'as indiqué ) mais le même problème persiste en faite j'ai pas pus manipuler équipe e1 a travers ces setters pour faire marquer un but par le joueur numéro 7 c'est pour cela j'ai créer le tab1 pareil pour le tab2 et merci encore une fois pour votre aide.

  6. #6
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Bonjour,

    Ton problème est-il résolu ? Si tel est le cas du peux mettre à résolu ton message.

    Transact.

  7. #7
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Août 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Août 2018
    Messages : 14
    Par défaut
    Citation Envoyé par transact Voir le message
    Bonjour,

    Ton problème est-il résolu ? Si tel est le cas du peux mettre à résolu ton message.

    Transact.
    Merci pour ta réponse mais malheureusement mon problème n'est pas encore résolu

  8. #8
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Bonjour,

    Peux-tu expliquer concrètement avec un code à l'appui quel est ton problème , et ce afin que je puisse t'aider ?

    Transact.

Discussions similaires

  1. java.lang.NullPointerException sur Fonction
    Par xeron33 dans le forum Débuter avec Java
    Réponses: 17
    Dernier message: 31/01/2020, 00h27
  2. Exception java.lang.NullPointerException sur EntityManagerFactory
    Par LamMSir dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 03/06/2013, 19h01
  3. java.lang.NullPointerException sur calcul dans TMap
    Par TheTcha dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 31/01/2013, 10h57
  4. java lang NullPointerException sur ue boucle for
    Par youness78 dans le forum Langage
    Réponses: 9
    Dernier message: 23/11/2009, 16h18
  5. java : image sur tableau?
    Par benderSobre dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 13/06/2008, 14h56

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