Methode static ??? erreur

didygwatinik Messages postés 58 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 15 décembre 2009 - 5 mai 2009 à 11:30
didygwatinik Messages postés 58 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 15 décembre 2009 - 5 mai 2009 à 19:04
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

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
5 mai 2009 à 11:40
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"
0
didygwatinik Messages postés 58 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 15 décembre 2009
5 mai 2009 à 11:41
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
0
thuyte Messages postés 3 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 5 mai 2009
5 mai 2009 à 14:10
C'est quoi l'erreur qu'il affiche?
0
thuyte Messages postés 3 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 5 mai 2009
5 mai 2009 à 14:12
Pardon, je fais pas attention ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thuyte Messages postés 3 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 5 mai 2009
5 mai 2009 à 14:17
Vérifie est - ce que t'as bien fermé la methode main???
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 mai 2009 à 14:45
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 !
0
didygwatinik Messages postés 58 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 15 décembre 2009
5 mai 2009 à 16:10
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é
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 mai 2009 à 17:46
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.
0
didygwatinik Messages postés 58 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 15 décembre 2009
5 mai 2009 à 18:30
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?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 mai 2009 à 19:01
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 !
0
didygwatinik Messages postés 58 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 15 décembre 2009
5 mai 2009 à 19:04
Ok ben je passerai par une instance de classe, je vais me débrouiller pour voir ca!! Merci en tout cas
0
Rejoignez-nous