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

Langage Java Discussion :

Problème sur lancement distant de méthode


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Problème sur lancement distant de méthode
    Bonjour à vous,

    j'aimerais à partir d'une classe main lancer une méthode appartenant à une classe distante.

    Dans la méthode, j'instancie un objet dont le constructeur est encore dans une autre classe et je le met dans un tableau, mais cela marche pas : erreur de compilation "java.lang.nullpointerexception".
    Avec des recherches, j'ai trouvé que ce message d'erreur apparait quand on instancie pas un objet avec "new", pourtant je l'ai fait pour ma part.

    sans la clause "try" dans la methode srcEnregistrerMembre de la classe Cineclub, j'ai deux erreur lors de l'exécution de test.java

    okException in thread "main" java.lang.NullPointerException
    at Cineclub.srcEnregistrerMembre(Cineclub.java:22)
    at test.main(test.java:6)

    Avec la clause "try" j'obtient cela :

    ok
    Exception capturÚe: null




    Voici les 3 classes, elles sont assez courtes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class test {
     
    public static void main(String args[]){
     
    Cineclub cine1 = new Cineclub(1,"MEGA"); // j'ai bien instancié l'objet cine1
     
    cine1.srcEnregistrerMembre();
     
     
    }}

    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
     
    public class Cineclub{
     
    Membre membres[];
    int nbrMembres = 0;
    int numero;
    String nom;
     
    //le constructeur
     
    public Cineclub (int id, String nomCine){
    nom=nomCine;
    numero=id;
     
    }
     
    //la méthode qui pose un problème
     
    public void srcEnregistrerMembre(){
    try{
    System.out.print("ok");
    membres[nbrMembres++] = new Membre ("francis","Alexandre",6,10);
    System.out.println(membres[1].nom); // rien ne s'affiche
    }
     catch (Exception e) {
          System.out.println("Exception capturée: " + e.getMessage());
       }
    }
     
     
    }
    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
     
    public class Membre{
     
    public String nom, prenom;
    public int categorie;
    public int nb_films_vus;
    public int nbstat=0;
     
    public Membre (String n, String pre, int cat, int nb_films){
     
    nom=n;
    prenom=pre;
    categorie=cat;
    nb_films_vus=nb_films;
     
    }
     
    public int srcafficherstats(){
    return nbstat;
    }
     
     
    }

    Je suis bloqué sur ce problème, ce serait sympa si vous pouviez m'aider.

    Merci d'avance.

  2. #2
    Membre habitué Avatar de yakanet
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Il faut tout simplement mettre une taille à ton tableau (membre)

    Quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    membres = new Membre[MEMBRE_SIZE];
    Puis après ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    membres[nbrMembres++] = new Membre ("francis","Alexandre",6,10);
    fonctionnera parfaitement.

    Maintenant je te conseil peut être d'utiliser une Collection (en aillant vu rapidement ton code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collection<Membre> liste = new ArrayList<Membre>();
    Ensuite pour ajouter un membre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     liste.add(new Membre ("francis","Alexandre",6,10));
    Voila

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup de m'avoir aidé,

    J'ai résolu le problème du tableau car j'arrive à le parcourir et à afficher ses cellules mais une erreur apparait toujours à la fin du programme.

    Quand je lance le programme j'entre plusieurs valeurs :

    Entrez le nom du membre :
    Alexandre
    Entrez le prenom du membre :
    zzz
    Entrez la catégorie socio-professi
    15
    Entrez le nombre de films vus par
    10
    Le nom 0 est Alexandre
    Sa catégorie est :15
    Son nombre de films vus est :10

    Exception in thread "main" java.lang.NullPointerException
    at Cineclub.srcEnregistrerMembre(Cineclub.java:55)
    at test.main(test.java:6)


    Dès lors que je veux parcourir le tableau et afficher ses valeurs, il m'affiche bien les valeurs mais m'ajoute le message d'erreur ci dessus.

    J'ai donc fait des modifications sur la classe Cineclub et j'ai enlevé des private dans la classe membre car je ferai des getter/setter plus tard.

    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
     
     
    import java.io.*;
    import java.util.*;
    import java.util.Scanner;
     
    public class Cineclub{
     
    Membre[] membres = new Membre[10];
     
     
    int nbrMembres = 0;
    int numero;
    String nom,prenom;
    int cat,nbrVus;
     
    public Cineclub (int id, String nomCine){
    nom=nomCine;
    numero=id;
     
    }
     
    public void srcEnregistrerMembre(){
     
    System.out.println("Entrez le nom du membre : ");
     
    Scanner input_name = new Scanner(System.in);
     
    /** Recuperation de la chaine de caractère **/
     
    String nom = input_name.nextLine();
     
    System.out.println("Entrez le prenom du membre : ");
     
    Scanner input_lastname = new Scanner(System.in);
    String prenom = input_lastname.nextLine();
     
    System.out.println("Entrez la catégorie socio-professionnelle du membre : ");
     
    Scanner input_cat= new Scanner(System.in);
    cat = input_cat.nextInt();
     
    System.out.println("Entrez le nombre de films vus par le membre : ");
     
    Scanner input_nbrVus= new Scanner(System.in);
    nbrVus = input_nbrVus.nextInt();
     
     
    membres[nbrMembres++]= new Membre (nom,prenom,cat,nbrVus);
    afficherStats();
     
     
    }
     
    public void afficherStats(){
    for(int k=0; k<membres.length; k++){
    System.out.println("Le nom "+k+" est "+ membres[k].nom);
    System.out.println("Sa catégorie est :" + membres[k].categorie);
    System.out.println("Son nombre de films vus est :" + membres[k].nb_films_vus);
     
    }
     
    }
     
    }

    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
     
     
     
     
    public class Membre{
     
    public String nom, prenom;
    public int categorie;
    public int nb_films_vus;
    private int nbstat=0;
     
     
    public Membre (String n, String pre, int cat, int nb_films){
     
    nom=n;
    prenom=pre;
    categorie=cat;
    nb_films_vus=nb_films;
     
    }
     
    public int srcafficherstats(){
    return nbstat;
    }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    class test {
     
    public static void main(String args[]){
     
    Cineclub cine1 = new Cineclub(1,"MEGA");
    cine1.srcEnregistrerMembre();
     
     
    }}

    J'implore votre aide encore une fois s'il vous plait.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Points : 318
    Points
    318
    Par défaut
    Tu déclares ton tableau comme contenant 10 membres.

    Dans ta méthode d'affichage, tu boucles sur la taille de ce tableau : le 1er élément est bel & bien un membre, pas de souci, par contre le 2è est null, d'où le null pointer.

    Pourquoi, comme l'a précisé yakanet, ne pas passer par une liste plutôt qu'un tableau ?

Discussions similaires

  1. Problème sur serveur distant mais pas en local.
    Par Max747 dans le forum Langage
    Réponses: 14
    Dernier message: 20/03/2015, 11h27
  2. Problème sur une requête Http méthode POST
    Par anto2b dans le forum Android
    Réponses: 0
    Dernier message: 13/02/2013, 11h53
  3. [AC-2003] Problèmes sur lancement d'une requete creation de table depuis VBE
    Par Jeanpierre71 dans le forum VBA Access
    Réponses: 8
    Dernier message: 22/12/2011, 21h12
  4. gros problème sur lancement rpm JACORB
    Par Elodie31 dans le forum CORBA
    Réponses: 1
    Dernier message: 07/06/2007, 11h33
  5. Réponses: 3
    Dernier message: 01/03/2007, 10h18

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