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 :

Variable publique dans main ?


Sujet :

Langage Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut Variable publique dans main ?
    Bonjour,

    j'aurai voulu savoir si il était possible de déclarer une variable publique dans le main.

    En effet, j'ai besoin d'une variable dans toutes mes fonctions de mon programme mais je ne veux pas la passer en paramètre et cette variable doit être initialisée dans une de ces fonctions. Comment puis je faire ?

    Merci

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Tu peux utiliser une variable statique qui sera initialisé par une méthode elle aussi statique.

  3. #3
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Merci mais en fait ya un autre problème. Voilà l'idée, je sens à l'avance que ça va foirer...

    - lecture d'un fichier pour initialiser n
    - initialisation d'une variable n avec la valeur trouvée dans le fichier
    - n doit être accessible partout
    - création d'un tab = new int[n]
    - tab doit être accessible partout aussi


    Alors ta solution me va mais elle m'embête quand il faut déclarer un tableau pour tout le programme...

    Une idée ?

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Je ne vois pas trop où est le problème...
    Tu peux initialiser ton tableau après avoir récupérer n et ceci toujours par l'intermédiaire d'une méthode statique.

  5. #5
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    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
     
    class Test {
     
     int n;
     int[] tab;
     
     
     .....
     
     construct(int i) {
     
         n = i;
         tab = new int[n];
     }
     
     
     int lectureFichier() {
     ...
     }
     
     main() {
     
         Test t = new Test(lectureFichier);
     
     
     }
     
     
    }
    par exemple. Mais ya plein de manières différentes de le faire.

    Enfin je comprends pas le pb ptet ?

  6. #6
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Citation Envoyé par in
    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
    class Test {
    
     int n;
     int[] tab;
    
    
     .....
    
     construct(int i) {
         
         n = i;
         tab = new int[n];
     }
     
    
     static int lectureFichier() {
     ...
     }
    
     main() {
    
         Test t = new Test(lectureFichier);
         
    
     }
    
    
    }
    par exemple. Mais ya plein de manières différentes de le faire.

    Enfin je comprends pas le pb ptet ?
    Salut,

    Attention, si tu ne mets pas static, tu auras un
    non static function lectureFichier cannot be referenced from a static context
    Fred

  7. #7
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Bon vous allez vous marrer alors rigolez pas trop fort...

    Je me rappelais plus que je pouvais déclarer ma variable et l'initialiser plus loin... Oups

    Dernière chose au vu des codes proposées : pourquoi si je met pas static pour ma méthode main, il ne veut pas exécuter ?
    Il me renvoie :

    Exception in thread "main" java.lang.NoSuchMethodError: main

    Merci !

  8. #8
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    la methode main se déclare toujours ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void main(String []args)
    {
      (...)
    }
    Voilà voilààà

    Fred

  9. #9
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par Magicien d'Oz
    Bon vous allez vous marrer alors rigolez pas trop fort...

    Je me rappelais plus que je pouvais déclarer ma variable et l'initialiser plus loin... Oups


    Désolé, mais j'ai pas pu me retenir

    Citation Envoyé par Magicien d'Oz
    Dernière chose au vu des codes proposées : pourquoi si je met pas static pour ma méthode main, il ne veut pas exécuter ?
    Il me renvoie :

    Exception in thread "main" java.lang.NoSuchMethodError: main

    Merci !
    Tout simplement pour que la JVM aie directement accès à ta méthode puisqu'elle sera déja initilialisée

  10. #10
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Et donc si je fais appel dans le main à une autre fonction, celle ci doit être aussi déclarée en static c'est ça ?

    En gros static ça signifie, quand tu m'appelles, je crée un nouveau contexte que j'efface quand j'ai fini,non ?

    Merci !

  11. #11
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    précision du "Pourquoi la méthode main est-elle statique?"
    Tout simplement parceque cette methode n'a pas besoin d'une instance de la classe qui l'héberge pour s'exécuter. C'est tout le principe du mot clé static

    Pour appeler une methode d'un objet a partir du main, soit cette methode est static :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MaClasse
    {
      public static void maFonction()
      {
      }
      public static void main(String[] args)
      {
        maFonction();
      }
    }
    soit tu l'appelles dirrectement à partir d'un objet instancié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class MaClasse
    {
      public void maFonction()
      {
      }
      public static void main(String[] args)
      {
        MaCalsse m=new MaClasse();
        m.maFonction();
      }
    }
    voilà voilààà

    Fred

  12. #12
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Bon ben merci à tous, je suis débloqué, je peux continuer !!

  13. #13
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par mavina
    Attention, si tu ne mets pas static ...
    oui je sais mais comme tu as pu le remarquer mon code ne respectait pas grand chose. C'était surtout pour la déclaration/initialisation des variables ...


    Citation Envoyé par Magicien d'Oz
    Bon vous allez vous marrer alors rigolez pas trop fort...



    désolé aussi

  14. #14
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Citation Envoyé par in
    oui je sais mais comme tu as pu le remarquer mon code ne respectait pas grand chose. C'était surtout pour la déclaration/initialisation des variables ...
    Oui, je suis trop terre à terre

    Fred

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2008, 09h40
  2. Réponses: 6
    Dernier message: 05/03/2008, 15h52
  3. Réponses: 3
    Dernier message: 16/01/2008, 09h07
  4. Utilisation d'une variable publique dans une DLL
    Par Delphi-ne dans le forum Delphi
    Réponses: 13
    Dernier message: 05/12/2006, 13h19
  5. Réponses: 6
    Dernier message: 23/09/2005, 12h54

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