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 :

Ne peut pas etre référencé dans un contexte static


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut Ne peut pas etre référencé dans un contexte static
    Bonjour !

    J'ai une petite question...

    J'utilise borland Jbuilder je l'ai utilisé pour faire une interface graphique située dans une classe gui.java

    Ma classe principale gère un jeu de blackjack, et appelle gui. L'orsque j'ai implémenté pour la première fois mon interface dans le code tout marchait bien.
    J'avais une méthode dans gui qui me récupérait la mise entrée par l'utilisateur dans l'interface.

    Depuis le code de blackjack à un peu changé l'appelle de la méthode ne se situe plus dans le main mais dans une méthode appellée game() Cependant le compilateur ne veut plus appeller ma méthode gui.getmise(); il me dit que l'on ne peut pas appeler un méthode non static depuis un contexte statique... Mais je ne vois pas en quoi le contexte est statique...

    Pouvez vous m'aider ?

    Merci

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Montre le bout de code...

    En gros ce message se produit quand tu essaye d'appeler une méthode d'instance dans un contexte statique (et donc où tu n'es pas dans une instance)...

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Points : 467
    Points
    467
    Par défaut
    Vu que main est statique et que là il n'y avait pas de problème, je suppose que gui.getmise() est aussi statique mais pas game() d'où le problème.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut
    pourtant gui.getmise n'est pas static d'ailleurs si je le met ca pose problème avec tout les composants de l'interface faite par jbuilder qui ne sont pas statiques, j'ai essayé de tous les mettre en static mais j'avais toujours un problème.

    je donne quelques bout de codes significatifs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static void main(String arg[] )throws IOException
        {
     
             blackjack blackjack = new blackjack();
     
     
            }
    l'appelle de game se fait ici

    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
     public void blackjack() throws IOException{
                BufferedReader LineInput = new BufferedReader(new InputStreamReader(System.
                        in));
                //initialisation du jeu
                //création joueur
                j1 = new joueur("j1");
                //affiche mise de départ
                System.out.println(message(10));
                //lancement du jeu
     
                //modification GUI
                gui gui = new gui();
     
                boolean gamecontinu = true;
                while (gamecontinu) {
                    if (j1.affichemise() == 0) {
                        System.out.println();
                        System.out.println(message(12));
                        //String ques = LineInput.readLine();
                        //obtenir les réponses par l'interface
                        while (gui.b < 1) {
     
                        }
     
                        System.out.println("variable de gui " + gui.b);
     
                        //int rep = Integer.parseInt(ques);
                        if (gui.b == 1) {
                            j1 = new joueur("j1");
                            //affiche mise de départ
                            System.out.println(message(10));
                            game(); //Le game incriminé
                        } else {
                            gamecontinu = false;
                        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void game()throws IOException
        {
            BufferedReader LineInput = new BufferedReader(new InputStreamReader(System.in));
            //[...]
              System.out.println("variable de gui "+gui.b);
                               int mise = gui.getMise() ; //erreur ici
    //[...]
    et le fameux getmise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      public int getMise()
                     {
                     String stmise ;
                     stmise = (String) this.jSpinner1.getValue();
                     int mise = Integer.parseInt(stmise);
     
                     return mise;
     
        }

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    bah fait un gui.game()...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut
    comment ca? Tu veux dire mettre le game dans le gui ?
    C'est pas très propre de melanger l'interface et le jeu comme ca... ?

    il n'y a pas de méthode game dans gui...

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par yodark
    il n'y a pas de méthode game dans gui...
    Elle est dans quelle classe ta méthode game?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut
    c'est une méthode de la classe blackjack !

  9. #9
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    et bien il faut que tu fasses:

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     blackjack blackjack = new blackjack();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public void blackjack() throws IOException{ ... }
    Les regles de nommage !!!!
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut
    pseudocode c'est ce que j'ai fais si je me trompe pas dans le code que j'ai cité ?!

    Rom si je met blackjack.game il me dit game non static ne peut etre referencé dans un contexte statique

  12. #12
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par yodark
    pseudocode c'est ce que j'ai fais si je me trompe pas dans le code que j'ai cité ?!

    Rom si je met blackjack.game il me dit game non static ne peut etre referencé dans un contexte statique
    pas blackjack.game, mais une instance de blackjack...

    BlackJack bj = new BlackJack();

    bj.game();


    Et lis les tutoriaux sur le site, ça pourrait t'aider à comprendre ce qu'est une instance...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut
    c'est ce que j'ai fais non ? dans mon tout premier block de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blackjack blackjack = new blackjack();

  14. #14
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par yodark
    pseudocode c'est ce que j'ai fais si je me trompe pas dans le code que j'ai cité ?!
    Les variables :
    Les noms variables sont écrits en minuscules sauf la première lettre de chaque de mot à partir du deuxième.

    Les méthodes :
    Le nom des méthodes suit les mêmes règles de construction que les variables, mais le premier mot devrait toujours être un verbe à l'infinitif, suivi éventuellement de mots pour qualifier l'action.

    Les classes et interfaces :
    Les noms de classes sont écrits en minuscule, chaque première lettre d'un mot est en majuscule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BlackJack bj = new BlackJack();
    
    bj.startGame();
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #15
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par yodark
    c'est ce que j'ai fais non ? dans mon tout premier block de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blackjack blackjack = new blackjack();
    Ce qu'il veut dire, c'est que dans ton code, le compilateur n'a pas la possibilité de faire la différence entre la classe "blackjack" et l'objet "blackjack". Et donc quand toi tu veux utiliser l'objet, lui il comprend que c'est la classe... d'où l'erreur... qui peut et doit être évitée en suivant les règles de nommage, donc majuscule pour les noms de classes, et minuscule pour les noms d'objets
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut
    donc si je comprends bien je devrais avoir une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public class BlackJack
    {
    un constructeur de classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public void BlackJack() throws IOException{
    et un appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BlackJack bj = new BlackJack();
    C'est ainsi ?

    J'ai essayé de cette facon ca ne fonctionne pas...

    Excusez moi si je pose autant de questions

  17. #17
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par yodark
    C'est ainsi ?
    Oui (d'après le peu que je vois...)

    Citation Envoyé par yodark
    J'ai essayé de cette facon ca ne fonctionne pas...
    Ca veut dire quoi "ça ne fonctionne pas"?

    Citation Envoyé par yodark
    Excusez moi si je pose autant de questions
    Y'a pas d'mal... par contre, si tu pouvais être un poil de yack plus précis, ça permettrait d'avancer...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut
    J'ai oublié de préciser l'erreur pardon c'est la même qu'avant c'est a dire que get.mise(); est non static alors que le contexte est statique

    Voila il manque encore des informations?

  19. #19
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par yodark
    J'ai oublié de préciser l'erreur pardon c'est la même qu'avant c'est a dire que get.mise(); est non static alors que le contexte est statique

    Voila il manque encore des informations?
    Ben moi je pige rien à tes bribes de sources qui trainent sans qu'on sache trop de quelle classe elles viennent...

    Mais, au hasard... tu as un objet "gui", et une classe "gui", il me semble... donc tu sais ce qu'il te reste à faire!

    A tout hasard, histoire d'être sûr... tu as pigé la notion de "static" ou pas?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  20. #20
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int mise = gui.getMise() ; //erreur ici
    //[...]
    J'ai oublié de préciser l'erreur pardon c'est la même qu'avant c'est a dire que get.mise(); est non static alors que le contexte est statique
    Si je devais jouer aux devinettes je dirai qu'il y a encore confusion entre les noms d'instances et les noms de classe. Quand on vous dit que les regles de nommage sont importantes...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/07/2010, 21h00
  2. Réponses: 6
    Dernier message: 02/08/2009, 12h39
  3. Réponses: 11
    Dernier message: 10/07/2006, 18h49
  4. Réponses: 8
    Dernier message: 29/03/2006, 15h50
  5. mémoire peut pas etre "read"
    Par zhoom dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 11h56

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