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 à l'essai
    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
    Candidat au Club
    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 à l'essai
    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 actif
    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:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    tab1[i] = f1;


    Ou dans l cas de la liste:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    tab1.add(f1);


    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 à l'essai
    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 actif
    Bonjour,

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

    Transact.

  7. #7
    Membre à l'essai
    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 actif
    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.

###raw>template_hook.ano_emploi###