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 :

Déclaration de procédures dans un main


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut Déclaration de procédures dans un main
    Bonjour,
    J'aimerais écrire un code qui contient plusieurs procédures.
    Voilà ce que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Client {
      public static void main(String[] args) {
        public void connection() {
          Hashtable<String,String> env=new Hashtable<String,String>();
          env.put (Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    ...
    ...
    J'ai une erreur à la compilation : illegal start of expression public void connection () {

    Est-ce que quelqu'un pourrait m'expliquer comment je pourrais faire ?

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    Salut,
    Oula toi tu viens du procedurale !!!
    En objet on ne parle pas de procedures mais de methodes !!
    CHaque methode est lié a une classe .
    le "main" est une methode , et en aucun cas tu peux definir une methode dans une autre methode , donc il faut que tu sorte ta methode connection de ton main !
    Ceci dit il me semble (d'apres mes tres vieux souvenir de C) qu'en C on ne peut pas definir une fonction dans le main non plus !!!!

  3. #3
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    Tes procedures (méthodes en java ) ne doivent pas se trouver dans ta methode main.
    Ceci est une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void main(String[] args) {
    La méthode main justement. Celle qui sera automatiquement appelée quand tu lanceras ton programme.
    Et les autres méthodes, que le main appelera, doivent se trouver au meme niveau et pas à l'interieur de ton main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Client {
     
       public void connection() {
          Hashtable<String,String> env=new Hashtable<String,String>();
          env.put (Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
           ...
       }
      public static void main(String[] args) {
       ...
       ... 
       connection();
        }
    }

  4. #4
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Merci pour toutes ces infos.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Ca fonctionne déjà bien mieux...

    J'ai déclaré une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public List getUsers() {
          NamingEnumeration answer;
          List users = new ArrayList();
          ...
          ...
    }
    Dans mon main, le l'ai déclarée comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void main(String[] args) {
         ...
         users = List getUsers();
         ...
    }
    Comment est-ce que je peux récupérer cette méthode dans le main. Ce que j'ai fait n'est pas du tout correct...

    Merci d'avance

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    La c'est moins immediat , le main est une methode static (methode de classe) alors que ton getUsers est une methode d'instance (abscence du mot clé static) donc pour faire appelle à getUsers tu dois avoir une instance de Client donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Client client = new Client();
    List users = cleint.getUsers();
    Devrait mieux fonctionner .
    Je suis pas sur d'avoir ete tres clair , mais je pense qu'il est important de comprendre la difference !!


  7. #7
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour,
    vu qu'il appelle la méthode getusers() à partir de son main (même classe), je ne suis pas sûr qu'il faille instancier un objet client. Enfin je ne suis pas encore un spécialiste, désolé si je me trompe.
    Sinon cette ligne peut suffir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List users = getUsers();

  8. #8
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Par défaut
    Citation Envoyé par morph41
    Bonjour,
    vu qu'il appelle la méthode getusers() à partir de son main (même classe), je ne suis pas sûr qu'il faille instancier un objet client. Enfin je ne suis pas encore un spécialiste, désolé si je me trompe.
    Sinon cette ligne peut suffir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List users = getUsers();
    ca ne marchera pas,a moins de passer la methode getUsers() en static.
    Pour une petite explication sur le mot cle static voir :
    http://java.developpez.com/faq/java/...motsClesStatic

  9. #9
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Merci pour toutes ces informations utiles.

    Ca marche !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/11/2013, 14h26
  2. déclaration des variables dans une procédure ou fonction
    Par guefrachi dans le forum Débuter
    Réponses: 6
    Dernier message: 23/07/2010, 13h27
  3. Déclaration de variables dans une procédure stockée
    Par jbrasselet dans le forum Développement
    Réponses: 5
    Dernier message: 16/02/2009, 09h00
  4. Réponses: 8
    Dernier message: 03/11/2006, 15h55
  5. Déclaration de fonction dans le "main".
    Par Pragmateek dans le forum C++
    Réponses: 14
    Dernier message: 23/06/2006, 19h32

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