Methode static ??? erreur

Signaler
Messages postés
58
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2009
-
didygwatinik
Messages postés
58
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2009
-
Bonjour,

Je suis sur un projet de gestion de prêts en JAVA, je débute totalement!!

Je voudrai appeler une méthode de ma classe TabLivre mais cela ne
marche pas, j'ai l'erreur suivante : Cannot make a static reference to
the non-static method.Je n'ai aucune méthode statique hormis le main et
ce n'est pas le main qui appelle ma méthode donc je ne comprends pas.
Si quelqu'un pouvait m'aider, voilà mon code :
public void actionPerformed(ActionEvent e) {

Object source = e.getSource();

if(source == Ajouter)

{

String ISBN, Titre, Auteur, Pages, Image, Category, Resume;

System.out.println("Ajouter un livre");

ISBN = ISBNT.getText();

Titre = TitreT.getText();

Auteur = AuteurT.getText();

Pages = PagesT.getText();

Category = PagesT.getText();

Resume = resumeT.getText();

Image = ImageT.getText();

Livre livre = new Livre(ISBN, Titre, Auteur, Pages, Category, Resume, Image);

TabLivre.ajouter(livre); //renvoie l'erreur

}

}

11 réponses

Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
11
TabLivre.ajouter(livre); => tu appels une fonction static je paris
dans une fonction qui n'est pas static :)

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
58
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2009

Justement non ma méthode est la suivante : public void ajouter(Livre monLivre){
        int i,j;
        i=0;
        while (monTabLivre[i].getTitre().compareTo(monLivre.getTitre())<0)
        {
            i++;
        }
        for(j=nb; j<i;j--)
        {
            monTabLivre[j] = monTabLivre[j+1];
        }
        monTabLivre[i] = monLivre;
        nb++;
    }

C'est pour ca que je ne comprends pas
Messages postés
3
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
5 mai 2009

C'est quoi l'erreur qu'il affiche?
Messages postés
3
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
5 mai 2009

Pardon, je fais pas attention ;-)
Messages postés
3
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
5 mai 2009

Vérifie est - ce que t'as bien fermé la methode main???
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
87
Salut,

C'est bien cà : tu appelle une méthode non statique de façon statique : il faut passer par une instance de TabLivre et appeler ta méthode dessus, et non par TabLibre.taMethode !
Messages postés
58
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2009

Mais si j'instancie tablivre je perds tout ce que j'ai dans mon tableau a cause de l'appel du constructeur, mon main est bien fermé
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
87
Ben tout dépend de ce que fais ta méthode ajouter : tu peux peut-être la passer en static si ce n'est qu'une méthode utilitaire.
Messages postés
58
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2009

Voila le corps de ma méthode :
public void ajouter(Livre monLivre){
        //System.out.println("Entrer Livre ajouté");
        int i,j;
        i=0;
        if(nb!=0)
        {
            while (monTabLivre[i].getTitre().compareTo(monLivre.getTitre())<0)
            {
                i++;
            }
            for(j=nb; j<i;j--)
            {
                monTabLivre[j] = monTabLivre[j+1];
            }
        }
        monTabLivre[i] = monLivre;
        nb++;
        //System.out.println("Livre ajouté");
       
    }

Quelle incidence ca aura si je la passe en static?
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
87
Le gros soucis c'est cà :
monTabLivre[] : qu'est-ce que cette variable ? Si elle est déclarée comme variable de classe, c'est mort, il faut que tu passe par une instance de ta classe pour appeler la méthode ajouter !
Messages postés
58
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2009

Ok ben je passerai par une instance de classe, je vais me débrouiller pour voir ca!! Merci en tout cas